From bba7304056c63dffadf1b0e097e63b56848c9995 Mon Sep 17 00:00:00 2001
From: Matthias Puchner <github@mpuchner.de>
Date: Mon, 19 Apr 2021 10:49:45 +0200
Subject: [PATCH] rm Translators (which translate GUI<->domain). They are not
 used any longer.

Obsolete because of removing GUI <-> domain translations in the last commits
---
 GUI/coregui/Models/BeamDistributionItem.cpp   |   3 -
 GUI/coregui/Models/BeamItems.cpp              |   3 -
 GUI/coregui/Models/DetectorItems.cpp          |   6 -
 GUI/coregui/Models/MesoCrystalItem.cpp        |   8 -
 GUI/coregui/Models/ModelPath.h                |   2 +-
 GUI/coregui/Models/MultiLayerItem.cpp         |   4 -
 GUI/coregui/Models/ParameterTranslators.cpp   | 151 ------------------
 GUI/coregui/Models/ParameterTranslators.h     |  94 -----------
 .../Models/ParticleCompositionItem.cpp        |   3 -
 GUI/coregui/Models/ParticleCoreShellItem.cpp  |   3 -
 GUI/coregui/Models/ParticleItem.cpp           |   3 -
 GUI/coregui/Models/SessionItem.cpp            |   9 --
 GUI/coregui/Models/SessionItem.h              |   4 -
 13 files changed, 1 insertion(+), 292 deletions(-)
 delete mode 100644 GUI/coregui/Models/ParameterTranslators.cpp
 delete mode 100644 GUI/coregui/Models/ParameterTranslators.h

diff --git a/GUI/coregui/Models/BeamDistributionItem.cpp b/GUI/coregui/Models/BeamDistributionItem.cpp
index 31e0d4a03f4..246d63118cc 100644
--- a/GUI/coregui/Models/BeamDistributionItem.cpp
+++ b/GUI/coregui/Models/BeamDistributionItem.cpp
@@ -15,7 +15,6 @@
 #include "GUI/coregui/Models/BeamDistributionItem.h"
 #include "Base/Const/Units.h"
 #include "GUI/coregui/Models/GroupItem.h"
-#include "GUI/coregui/Models/ParameterTranslators.h"
 #include "GUI/coregui/Models/RealLimitsItems.h"
 #include "Param/Distrib/Distributions.h"
 #include "Param/Distrib/ParameterDistribution.h"
@@ -24,8 +23,6 @@ const QString BeamDistributionItem::P_DISTRIBUTION = "Distribution";
 
 BeamDistributionItem::BeamDistributionItem(const QString& name, bool show_mean) : SessionItem(name)
 {
-    addTranslator(DistributionNoneTranslator());
-
     mapper()->setOnChildPropertyChange([this, show_mean](SessionItem* item, const QString&) {
         if (item->modelType() == "GroupProperty" && item->parent() == this)
             initDistributionItem(show_mean);
diff --git a/GUI/coregui/Models/BeamItems.cpp b/GUI/coregui/Models/BeamItems.cpp
index 0d9b9f12c3c..e16ff56cff4 100644
--- a/GUI/coregui/Models/BeamItems.cpp
+++ b/GUI/coregui/Models/BeamItems.cpp
@@ -20,7 +20,6 @@
 #include "GUI/coregui/Models/BeamWavelengthItem.h"
 #include "GUI/coregui/Models/FootprintItems.h"
 #include "GUI/coregui/Models/GroupItem.h"
-#include "GUI/coregui/Models/ParameterTranslators.h"
 #include "GUI/coregui/Models/PointwiseAxisItem.h"
 #include "GUI/coregui/Models/SessionItemUtils.h"
 #include "GUI/coregui/Models/SpecularBeamInclinationItem.h"
@@ -50,8 +49,6 @@ BeamItem::BeamItem(const QString& beam_model) : SessionItem(beam_model)
 
     addProperty<BeamAzimuthalAngleItem>(P_AZIMUTHAL_ANGLE);
     addProperty<VectorItem>(P_POLARIZATION)->setToolTip(polarization_tooltip);
-
-    addTranslator(VectorParameterTranslator(P_POLARIZATION, "BlochVector"));
 }
 
 BeamItem::~BeamItem() = default;
diff --git a/GUI/coregui/Models/DetectorItems.cpp b/GUI/coregui/Models/DetectorItems.cpp
index 2a25707dd41..e2ba5b61e93 100644
--- a/GUI/coregui/Models/DetectorItems.cpp
+++ b/GUI/coregui/Models/DetectorItems.cpp
@@ -16,7 +16,6 @@
 #include "Device/Detector/IDetector2D.h"
 #include "Device/Resolution/ResolutionFunction2DGaussian.h"
 #include "GUI/coregui/Models/MaskItems.h"
-#include "GUI/coregui/Models/ParameterTranslators.h"
 #include "GUI/coregui/Models/ResolutionFunctionItems.h"
 #include "GUI/coregui/Models/SessionItemUtils.h"
 #include "GUI/coregui/Models/SessionModel.h"
@@ -46,11 +45,6 @@ DetectorItem::DetectorItem(const QString& modelType) : SessionItem(modelType)
         .setToolTip(analyzer_efficiency_tooltip);
     addProperty(P_ANALYZER_TOTAL_TRANSMISSION, 1.0)->setToolTip(analyzer_transmission_tooltip);
 
-    QString additional_name = QString::fromStdString("Analyzer");
-    addTranslator(VectorParameterTranslator(P_ANALYZER_DIRECTION, "Direction", {additional_name}));
-    addTranslator(AddElementTranslator(P_ANALYZER_EFFICIENCY, additional_name));
-    addTranslator(AddElementTranslator(P_ANALYZER_TOTAL_TRANSMISSION, additional_name));
-
     mapper()->setOnPropertyChange([this](const QString& name) {
         if (name == P_RESOLUTION_FUNCTION)
             update_resolution_function_tooltips();
diff --git a/GUI/coregui/Models/MesoCrystalItem.cpp b/GUI/coregui/Models/MesoCrystalItem.cpp
index 7029829152e..e25eee595aa 100644
--- a/GUI/coregui/Models/MesoCrystalItem.cpp
+++ b/GUI/coregui/Models/MesoCrystalItem.cpp
@@ -81,14 +81,6 @@ MesoCrystalItem::MesoCrystalItem() : SessionGraphicsItem("MesoCrystal")
 
     registerTag(ParticleItem::T_TRANSFORMATION, 0, 1, QStringList() << "Rotation");
 
-    addTranslator(VectorParameterTranslator(ParticleItem::P_POSITION, "Position"));
-    addTranslator(RotationTranslator());
-    QStringList additional_names{QString::fromStdString("Lattice"),
-                                 QString::fromStdString("Crystal")};
-    addTranslator(VectorParameterTranslator(P_VECTOR_A, "BasisA", additional_names));
-    addTranslator(VectorParameterTranslator(P_VECTOR_B, "BasisB", additional_names));
-    addTranslator(VectorParameterTranslator(P_VECTOR_C, "BasisC", additional_names));
-
     mapper()->setOnParentChange([this](SessionItem* parent) {
         if (SessionItemUtils::HasOwnAbundance(parent)) {
             setItemValue(ParticleItem::P_ABUNDANCE, 1.0);
diff --git a/GUI/coregui/Models/ModelPath.h b/GUI/coregui/Models/ModelPath.h
index 0f52bb8c0d8..fc2cdb3ed66 100644
--- a/GUI/coregui/Models/ModelPath.h
+++ b/GUI/coregui/Models/ModelPath.h
@@ -15,13 +15,13 @@
 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_MODELPATH_H
 #define BORNAGAIN_GUI_COREGUI_MODELS_MODELPATH_H
 
-#include "GUI/coregui/Models/ParameterTranslators.h"
 #include <memory>
 #include <vector>
 
 class SessionItem;
 class QModelIndex;
 class SessionModel;
+class QString;
 
 namespace ModelPath {
 QString getPathFromIndex(const QModelIndex& index);
diff --git a/GUI/coregui/Models/MultiLayerItem.cpp b/GUI/coregui/Models/MultiLayerItem.cpp
index d3f8ec66445..6adf6e59cdb 100644
--- a/GUI/coregui/Models/MultiLayerItem.cpp
+++ b/GUI/coregui/Models/MultiLayerItem.cpp
@@ -14,7 +14,6 @@
 
 #include "GUI/coregui/Models/MultiLayerItem.h"
 #include "GUI/coregui/Models/LayerItem.h"
-#include "GUI/coregui/Models/ParameterTranslators.h"
 #include "GUI/coregui/Models/VectorItem.h"
 
 namespace {
@@ -40,9 +39,6 @@ MultiLayerItem::MultiLayerItem() : SessionGraphicsItem("MultiLayer")
     registerTag(T_LAYERS, 0, -1, QStringList() << "Layer");
     setDefaultTag(T_LAYERS);
 
-    addTranslator(RoughnessTranslator(this));
-    addTranslator(VectorParameterTranslator(P_EXTERNAL_FIELD, "ExternalField"));
-
     mapper()->setOnChildrenChange([this](SessionItem*) { updateLayers(); });
 }
 
diff --git a/GUI/coregui/Models/ParameterTranslators.cpp b/GUI/coregui/Models/ParameterTranslators.cpp
deleted file mode 100644
index f9ef865a69f..00000000000
--- a/GUI/coregui/Models/ParameterTranslators.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/coregui/Models/ParameterTranslators.cpp
-//! @brief     Implements subclasses of IParameterTranslator
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#include "GUI/coregui/Models/ParameterTranslators.h"
-#include "GUI/coregui/Models/MesoCrystalItem.h"
-#include "GUI/coregui/Models/ParticleItem.h"
-#include "GUI/coregui/Models/VectorItem.h"
-#include "GUI/coregui/utils/GUIHelpers.h"
-
-namespace {
-const QStringList expectedRoughnessPars =
-    QStringList() << QString::fromStdString("Sigma") << QString::fromStdString("Hurst")
-                  << QString::fromStdString("CorrelationLength");
-}
-
-IPathTranslator::~IPathTranslator() = default;
-
-AddElementTranslator::AddElementTranslator(QString gui_name, QString additional_name)
-    : m_gui_name{std::move(gui_name)}, m_additional_name{std::move(additional_name)}
-{
-}
-
-AddElementTranslator* AddElementTranslator::clone() const
-{
-    return new AddElementTranslator(m_gui_name, m_additional_name);
-}
-
-QStringList AddElementTranslator::translate(const QStringList& list) const
-{
-    if (list.back() != m_gui_name)
-        return list;
-
-    QStringList result = list;
-    result << m_additional_name;
-    return result;
-}
-
-QStringList RotationTranslator::translate(const QStringList& list) const
-{
-    if (list.back() != "Rotation")
-        return list;
-
-    ASSERT(list.size() == 3);
-    QStringList result = list;
-    result.removeLast();
-    return result;
-}
-
-QStringList DistributionNoneTranslator::translate(const QStringList& list) const
-{
-    if (list.back() != "DistributionNone")
-        return list;
-
-    Q_UNUSED(list);
-    return QStringList(); // removing "DistributionNone/Value"
-}
-
-//! Converts "/Layer1/LayerBasicRoughness/Sigma" into "/LayerInterface0/LayerBasicRoughness/Sigma"
-
-RoughnessTranslator::RoughnessTranslator(const SessionItem* p_parent) : m_parent(p_parent) {}
-
-RoughnessTranslator* RoughnessTranslator::clone() const
-{
-    return new RoughnessTranslator(m_parent);
-}
-
-QStringList RoughnessTranslator::translate(const QStringList& list) const
-{
-    if (list.empty())
-        return {};
-
-    if (!list.back().contains("Layer") || !expectedRoughnessPars.contains(list.front()))
-        return list;
-
-    QStringList result = list;
-
-    QString layerName = result.takeLast();
-    int layerIndex = getLayerIndex(layerName);
-    QString postfix = numberOfLayers() == 2 ? QString() : QString::number(layerIndex - 1);
-
-    result.push_back(QString::fromStdString("LayerInterface") + postfix);
-    return result;
-}
-
-//! Extract layer index from the string "Layer11"
-
-int RoughnessTranslator::getLayerIndex(QString layerName) const
-{
-    layerName.remove("Layer");
-    bool ok(true);
-    int layerIndex = layerName.toInt(&ok);
-    if (!ok)
-        throw GUIHelpers::Error("RoughnessTranslator::getLayerIndex() -> Error. Can't parse.");
-    return layerIndex;
-}
-
-int RoughnessTranslator::numberOfLayers() const
-{
-    QVector<SessionItem*> list = m_parent->getChildrenOfType("Layer");
-    return list.size();
-}
-
-VectorParameterTranslator::VectorParameterTranslator(QString gui_name, std::string base_name,
-                                                     QStringList additional_names)
-    : m_gui_name{std::move(gui_name)}
-    , m_base_name{std::move(base_name)}
-    , m_additional_names{std::move(additional_names)}
-{
-}
-
-VectorParameterTranslator* VectorParameterTranslator::clone() const
-{
-    return new VectorParameterTranslator(m_gui_name, m_base_name, m_additional_names);
-}
-
-QStringList VectorParameterTranslator::translate(const QStringList& list) const
-{
-    if (list.empty())
-        return {};
-
-    if (list.back() != m_gui_name)
-        return list;
-
-    ASSERT(list.size() == 2);
-
-    QStringList result;
-    if (list.front() == VectorItem::P_X) {
-        result << QString::fromStdString(IParametricComponent::XComponentName(m_base_name));
-    } else if (list.front() == VectorItem::P_Y) {
-        result << QString::fromStdString(IParametricComponent::YComponentName(m_base_name));
-    } else if (list.front() == VectorItem::P_Z) {
-        result << QString::fromStdString(IParametricComponent::ZComponentName(m_base_name));
-    } else {
-        GUIHelpers::Error("VectorParameterTranslator::translate() -> Unexpected list structure");
-    }
-    for (auto add_name : m_additional_names) {
-        result << add_name;
-    }
-    return result;
-}
diff --git a/GUI/coregui/Models/ParameterTranslators.h b/GUI/coregui/Models/ParameterTranslators.h
deleted file mode 100644
index 02c20f4d310..00000000000
--- a/GUI/coregui/Models/ParameterTranslators.h
+++ /dev/null
@@ -1,94 +0,0 @@
-//  ************************************************************************************************
-//
-//  BornAgain: simulate and fit reflection and scattering
-//
-//! @file      GUI/coregui/Models/ParameterTranslators.h
-//! @brief     Defines interface IParameterTranslator and subclasses
-//!
-//! @homepage  http://www.bornagainproject.org
-//! @license   GNU General Public License v3 or higher (see COPYING)
-//! @copyright Forschungszentrum Jülich GmbH 2018
-//! @authors   Scientific Computing Group at MLZ (see CITATION, AUTHORS)
-//
-//  ************************************************************************************************
-
-#ifndef BORNAGAIN_GUI_COREGUI_MODELS_PARAMETERTRANSLATORS_H
-#define BORNAGAIN_GUI_COREGUI_MODELS_PARAMETERTRANSLATORS_H
-
-#include <QStringList>
-
-class SessionItem;
-
-class IPathTranslator {
-public:
-    virtual ~IPathTranslator();
-
-    virtual IPathTranslator* clone() const = 0;
-
-    virtual QStringList translate(const QStringList& list) const = 0;
-};
-
-class AddElementTranslator : public IPathTranslator {
-public:
-    AddElementTranslator(QString gui_name, QString additional_name);
-    ~AddElementTranslator() override {}
-
-    AddElementTranslator* clone() const override;
-
-    QStringList translate(const QStringList& list) const override;
-
-private:
-    QString m_gui_name;
-    QString m_additional_name;
-};
-
-class RotationTranslator : public IPathTranslator {
-public:
-    ~RotationTranslator() override {}
-
-    RotationTranslator* clone() const override { return new RotationTranslator; }
-
-    QStringList translate(const QStringList& list) const override;
-};
-
-class DistributionNoneTranslator : public IPathTranslator {
-public:
-    ~DistributionNoneTranslator() override {}
-
-    DistributionNoneTranslator* clone() const override { return new DistributionNoneTranslator; }
-
-    QStringList translate(const QStringList& list) const override;
-};
-
-class RoughnessTranslator : public IPathTranslator {
-public:
-    RoughnessTranslator(const SessionItem* p_parent);
-    ~RoughnessTranslator() override {}
-
-    RoughnessTranslator* clone() const override;
-
-    QStringList translate(const QStringList& list) const override;
-
-private:
-    int getLayerIndex(QString layerName) const;
-    int numberOfLayers() const;
-    const SessionItem* m_parent;
-};
-
-class VectorParameterTranslator : public IPathTranslator {
-public:
-    VectorParameterTranslator(QString gui_name, std::string base_name,
-                              QStringList additional_names = {});
-    ~VectorParameterTranslator() override {}
-
-    VectorParameterTranslator* clone() const override;
-
-    QStringList translate(const QStringList& list) const override;
-
-private:
-    QString m_gui_name;
-    std::string m_base_name;
-    QStringList m_additional_names;
-};
-
-#endif // BORNAGAIN_GUI_COREGUI_MODELS_PARAMETERTRANSLATORS_H
diff --git a/GUI/coregui/Models/ParticleCompositionItem.cpp b/GUI/coregui/Models/ParticleCompositionItem.cpp
index 177613882ee..cedd5798744 100644
--- a/GUI/coregui/Models/ParticleCompositionItem.cpp
+++ b/GUI/coregui/Models/ParticleCompositionItem.cpp
@@ -55,9 +55,6 @@ ParticleCompositionItem::ParticleCompositionItem() : SessionGraphicsItem("Partic
     setDefaultTag(T_PARTICLES);
     registerTag(ParticleItem::T_TRANSFORMATION, 0, 1, QStringList() << "Rotation");
 
-    addTranslator(VectorParameterTranslator(ParticleItem::P_POSITION, "Position"));
-    addTranslator(RotationTranslator());
-
     mapper()->setOnParentChange([this](SessionItem* parent) {
         if (SessionItemUtils::HasOwnAbundance(parent)) {
             setItemValue(ParticleItem::P_ABUNDANCE, 1.0);
diff --git a/GUI/coregui/Models/ParticleCoreShellItem.cpp b/GUI/coregui/Models/ParticleCoreShellItem.cpp
index 704d547a36d..5d300ddee53 100644
--- a/GUI/coregui/Models/ParticleCoreShellItem.cpp
+++ b/GUI/coregui/Models/ParticleCoreShellItem.cpp
@@ -51,9 +51,6 @@ ParticleCoreShellItem::ParticleCoreShellItem() : SessionGraphicsItem("ParticleCo
     registerTag(T_SHELL, 0, 1, QStringList() << "Particle");
     registerTag(ParticleItem::T_TRANSFORMATION, 0, 1, QStringList() << "Rotation");
 
-    addTranslator(VectorParameterTranslator(ParticleItem::P_POSITION, "Position"));
-    addTranslator(RotationTranslator());
-
     mapper()->setOnParentChange([this](SessionItem* parent) {
         if (SessionItemUtils::HasOwnAbundance(parent)) {
             setItemValue(ParticleItem::P_ABUNDANCE, 1.0);
diff --git a/GUI/coregui/Models/ParticleItem.cpp b/GUI/coregui/Models/ParticleItem.cpp
index 8965faff29d..1976f28af6f 100644
--- a/GUI/coregui/Models/ParticleItem.cpp
+++ b/GUI/coregui/Models/ParticleItem.cpp
@@ -55,9 +55,6 @@ ParticleItem::ParticleItem() : SessionGraphicsItem("Particle")
     registerTag(T_TRANSFORMATION, 0, 1, QStringList() << "Rotation");
     setDefaultTag(T_TRANSFORMATION);
 
-    addTranslator(VectorParameterTranslator(P_POSITION, "Position"));
-    addTranslator(RotationTranslator());
-
     mapper()->setOnParentChange(
         [this](SessionItem* newParent) { updatePropertiesAppearance(newParent); });
 }
diff --git a/GUI/coregui/Models/SessionItem.cpp b/GUI/coregui/Models/SessionItem.cpp
index 7af52817036..441dabaa420 100644
--- a/GUI/coregui/Models/SessionItem.cpp
+++ b/GUI/coregui/Models/SessionItem.cpp
@@ -14,7 +14,6 @@
 
 #include "GUI/coregui/Models/GroupItem.h"
 #include "GUI/coregui/Models/ItemFactory.h"
-#include "GUI/coregui/Models/ParameterTranslators.h"
 #include "GUI/coregui/Models/SessionItemData.h"
 #include "GUI/coregui/Models/SessionItemTags.h"
 #include "GUI/coregui/Models/SessionItemUtils.h"
@@ -56,9 +55,6 @@ SessionItem::~SessionItem()
     m_children.clear();
     if (m_parent && m_model)
         m_parent->childDeleted(this);
-
-    for (IPathTranslator* translator : m_translators)
-        delete translator;
 }
 
 //! Returns model of this item.
@@ -553,11 +549,6 @@ ModelMapper* SessionItem::mapper()
     return m_mapper.get();
 }
 
-void SessionItem::addTranslator(const IPathTranslator& translator)
-{
-    m_translators.push_back(translator.clone());
-}
-
 QByteArray SessionItem::serializeBinaryData() const
 {
     return QByteArray();
diff --git a/GUI/coregui/Models/SessionItem.h b/GUI/coregui/Models/SessionItem.h
index e07dec8cd3a..5a6b03babfe 100644
--- a/GUI/coregui/Models/SessionItem.h
+++ b/GUI/coregui/Models/SessionItem.h
@@ -26,7 +26,6 @@ Q_DECLARE_METATYPE(RealLimits)
 
 class SessionItemData;
 class SessionItemTags;
-class IPathTranslator;
 class QXmlStreamWriter;
 class QXmlStreamReader;
 
@@ -126,8 +125,6 @@ public:
 
     ModelMapper* mapper();
 
-    void addTranslator(const IPathTranslator& translator);  // #baRemoveParticleDistribution ++ obsolete?
-
     virtual QByteArray serializeBinaryData() const;
     virtual void deserializeBinaryData(const QByteArray& data);
 
@@ -145,7 +142,6 @@ private:
     std::unique_ptr<SessionItemData> m_properties;
     std::unique_ptr<SessionItemTags> m_tags;
     std::unique_ptr<ModelMapper> m_mapper;
-    QVector<IPathTranslator*> m_translators;
 };
 
 template <typename T> T* SessionItem::item(const QString& tag) const
-- 
GitLab