diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp index 3bbb2ee55a87be3216386a0f847b40829b4bb785..13ce08b7e0b96494d60e19cd79f2bdc67b4b263f 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp +++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp @@ -446,7 +446,7 @@ namespace armarx::armem::gui::instance std::vector<QAction*> InstanceView::makeActionsCopyDataToClipboard() { - return makeCopyActions(currentInstance->data()); + return makeCopyActions(currentInstance->data(), currentAronType); } std::vector<QAction*> InstanceView::makeActionsCopyDataToClipboard(const aron::Path& path) @@ -454,7 +454,8 @@ namespace armarx::armem::gui::instance try { aron::data::VariantPtr element = currentInstance->data()->navigateAbsolute(path); - return makeCopyActions(element); + aron::type::VariantPtr elementType = currentAronType->navigateAbsolute(path); + return makeCopyActions(element, elementType); } catch (const aron::error::AronException& e) { @@ -463,18 +464,17 @@ namespace armarx::armem::gui::instance return {}; } - std::vector<QAction*> InstanceView::makeCopyActions(const aron::data::VariantPtr& element) + std::vector<QAction*> InstanceView::makeCopyActions( + const aron::data::VariantPtr& element, + const aron::type::VariantPtr& elementType) { QAction* easyJsonAction = new QAction("Copy data to clipboard as easy JSON"); - connect(easyJsonAction, &QAction::triggered, [this, element]() + connect(easyJsonAction, &QAction::triggered, [this, element, elementType]() { try { TreeTypedJSONConverter conv; - // TODO(phesch): Type hierarchy doesn't match data hierarchy - armarx::aron::data::visitRecursive(conv, currentInstance->data(), currentAronType); - //nlohmann::json json = - // aron::converter::AronNlohmannJSONConverter::ConvertToNlohmannJSON(element); + armarx::aron::data::visitRecursive(conv, element, elementType); QClipboard* clipboard = QApplication::clipboard(); clipboard->setText(QString::fromStdString(conv.getJSON().dump(2))); QApplication::processEvents(); diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h index 982d277db1febb68070290d3c86a3f06c602b990..970af2b6e45698cd342950a1ffe4f6612877d000 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h +++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h @@ -84,7 +84,9 @@ namespace armarx::armem::gui::instance QAction* makeActionCopyMemoryID(const MemoryID& id); std::vector<QAction*> makeActionsCopyDataToClipboard(); std::vector<QAction*> makeActionsCopyDataToClipboard(const aron::Path& path); - std::vector<QAction*> makeCopyActions(const aron::data::VariantPtr& element); + std::vector<QAction*> makeCopyActions( + const aron::data::VariantPtr& element, + const aron::type::VariantPtr& elementType); private: