diff --git a/GUI/coregui/Models/ModelPath.cpp b/GUI/coregui/Models/ModelPath.cpp index 65ce7f5fb735cd7a44d2e8ff249ed527d5b9edd1..ceccf3258cb01c07ed120adab746eb620d603ba2 100644 --- a/GUI/coregui/Models/ModelPath.cpp +++ b/GUI/coregui/Models/ModelPath.cpp @@ -135,7 +135,7 @@ QModelIndex ModelPath::getIndexFromPath(const SessionModel *model, const QString } //! returns an item from relative path wrt to given parent -SessionItem *ModelPath::getItemFromPath(const QString &relPath, SessionItem *parent) +SessionItem *ModelPath::getItemFromPath(const QString &relPath, const SessionItem *parent) { Q_ASSERT(parent); QString fullPath = getPathFromIndex(parent->index()) + "/" + relPath; diff --git a/GUI/coregui/Models/ModelPath.h b/GUI/coregui/Models/ModelPath.h index 9b88aacbce9d9c70c78111f4b4d9c635f91b9524..fef0fad55cf3cf345be2ae3ab601377542056e0f 100644 --- a/GUI/coregui/Models/ModelPath.h +++ b/GUI/coregui/Models/ModelPath.h @@ -46,7 +46,7 @@ public: static QModelIndex getIndexFromPath(const SessionModel *model, const QString &path); - static SessionItem* getItemFromPath(const QString &relPath, SessionItem *parent); + static SessionItem* getItemFromPath(const QString &relPath, const SessionItem* parent); static bool isValidItem(SessionModel *model, SessionItem *item, const QModelIndex &parent); diff --git a/GUI/coregui/Models/ParameterTreeUtils.cpp b/GUI/coregui/Models/ParameterTreeUtils.cpp index 8975fcdad52e25a24221889278ad2fc17bfee442..c6ee499e9d5fc5a52b24031b78b2c7752d3a1a6d 100644 --- a/GUI/coregui/Models/ParameterTreeUtils.cpp +++ b/GUI/coregui/Models/ParameterTreeUtils.cpp @@ -27,6 +27,7 @@ #include "FitParameterHelper.h" #include "SampleModel.h" #include <QStack> +#include <QDebug> namespace { void handleItem(SessionItem* tree, const SessionItem* source); @@ -88,7 +89,7 @@ void ParameterTreeUtils::visitParameterContainer(SessionItem* container, //! Creates list with parameter names of source item. -QStringList ParameterTreeUtils::parameterTreeList(const SessionItem* source) +QStringList ParameterTreeUtils::parameterTreeNames(const SessionItem* source) { QStringList result; @@ -107,6 +108,32 @@ QStringList ParameterTreeUtils::parameterTreeList(const SessionItem* source) return result; } +//! Creates domain translated list of parameter names for source item. + +QStringList ParameterTreeUtils::translatedParameterTreeNames(const SessionItem* source) +{ + QStringList result; + + SampleModel model; + SessionItem* container = model.insertNewItem(Constants::ParameterContainerType); + + populateParameterContainer(container, source); + + visitParameterContainer(container, [&](ParameterItem* parItem) + { + QString relPath = source->displayName() + "/" + + parItem->getItemValue(ParameterItem::P_LINK).toString(); + SessionItem *linkedItem = ModelPath::getItemFromPath(relPath, source); + result.push_back(ModelPath::itemPathTranslation(*linkedItem, source->parent())); + }); + + std::reverse(result.begin(), result.end()); + + return result; + +} + + //! For every ParameterItem in a container creates a link to the domain. void ParameterTreeUtils::populateDomainLinks(SessionItem* container) @@ -186,3 +213,4 @@ void handleItem(SessionItem* tree, const SessionItem* source) } // namespace + diff --git a/GUI/coregui/Models/ParameterTreeUtils.h b/GUI/coregui/Models/ParameterTreeUtils.h index 15f09f00875ce39577a9764dd7cbdf62ea2b4314..d1a24cd5983427d1ee7689169dee918c504e1b3c 100644 --- a/GUI/coregui/Models/ParameterTreeUtils.h +++ b/GUI/coregui/Models/ParameterTreeUtils.h @@ -39,7 +39,9 @@ BA_CORE_API_ void populateParameterContainer(SessionItem* container, const Sessi BA_CORE_API_ void visitParameterContainer(SessionItem* container, std::function<void(ParameterItem*)> fun); -BA_CORE_API_ QStringList parameterTreeList(const SessionItem* source); +BA_CORE_API_ QStringList parameterTreeNames(const SessionItem* source); + +BA_CORE_API_ QStringList translatedParameterTreeNames(const SessionItem* source); BA_CORE_API_ void populateDomainLinks(SessionItem* container); diff --git a/Tests/UnitTests/GUI/TestGUI.cpp b/Tests/UnitTests/GUI/TestGUI.cpp index 755987dbeed0e1d620efd199eeb3392f8f60b532..bb700ebea959d63b2e527aeb0ac65a402a5eb271 100644 --- a/Tests/UnitTests/GUI/TestGUI.cpp +++ b/Tests/UnitTests/GUI/TestGUI.cpp @@ -45,7 +45,7 @@ int main(int argc, char** argv) { // TestTranslations testTranslations; // TestGroupProperty testGroupProperty; TestParticleDistributionItem testParticleDistributionItem; -// TestParameterTreeUtils testParameterTreeUtils; + TestParameterTreeUtils testParameterTreeUtils; bool status(false); @@ -68,7 +68,7 @@ int main(int argc, char** argv) { // status |= QTest::qExec(&testTranslations, argc, argv); // status |= QTest::qExec(&testGroupProperty, argc, argv); status |= QTest::qExec(&testParticleDistributionItem, argc, argv); -// status |= QTest::qExec(&testParameterTreeUtils, argc, argv); + status |= QTest::qExec(&testParameterTreeUtils, argc, argv); return status; } diff --git a/Tests/UnitTests/GUI/TestParameterTreeUtils.h b/Tests/UnitTests/GUI/TestParameterTreeUtils.h index c12116f61573671e9bae999afbc79929ea53ebb1..4e852feb3e4ffe7ea850ef5b2e1c503a8f87b7d5 100644 --- a/Tests/UnitTests/GUI/TestParameterTreeUtils.h +++ b/Tests/UnitTests/GUI/TestParameterTreeUtils.h @@ -5,30 +5,49 @@ #include "SampleModel.h" namespace { - const QStringList expectedForParticle = { + const QStringList expectedParticleParameterNames = { "Particle/AnisoPyramid/Length", "Particle/AnisoPyramid/Width", "Particle/AnisoPyramid/Height", "Particle/AnisoPyramid/Alpha", "Particle/Abundance", "Particle/Position Offset/X", "Particle/Position Offset/Y", "Particle/Position Offset/Z"}; -} + const QStringList expectedParticleParameterTranslations = { + "Particle/AnisoPyramid/Length", "Particle/AnisoPyramid/Width", + "Particle/AnisoPyramid/Height", "Particle/AnisoPyramid/Alpha", + "Particle/Abundance", "Particle/PositionX", + "Particle/PositionY", "Particle/PositionZ"}; +} class TestParameterTreeUtils : public QObject { Q_OBJECT private slots: - void test_parameterTreeList(); + void test_parameterTreeNames(); + void test_parameterTranslatedNames(); }; -//! Tests function returning list of names representing properties of given item. +//! Tests parameter names of given item. -inline void TestParameterTreeUtils::test_parameterTreeList() +inline void TestParameterTreeUtils::test_parameterTreeNames() { SampleModel model; SessionItem *layer = model.insertNewItem(Constants::LayerType); - QCOMPARE(ParameterTreeUtils::parameterTreeList(layer), QStringList() << "Layer/Thickness"); + QCOMPARE(ParameterTreeUtils::parameterTreeNames(layer), QStringList() << "Layer/Thickness"); + + SessionItem *particle = model.insertNewItem(Constants::ParticleType); + QCOMPARE(ParameterTreeUtils::parameterTreeNames(particle), expectedParticleParameterNames); +} + +//! Tests translated parameter names of given item. + +inline void TestParameterTreeUtils::test_parameterTranslatedNames() +{ + QCOMPARE(1,1); + SampleModel model; SessionItem *particle = model.insertNewItem(Constants::ParticleType); - QCOMPARE(ParameterTreeUtils::parameterTreeList(particle), expectedForParticle); + + QCOMPARE(ParameterTreeUtils::translatedParameterTreeNames(particle), + expectedParticleParameterTranslations); }