From 248bf77d45b3c2dec0373d1eb9ad5e4b7211f3e5 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Tue, 6 May 2014 16:31:23 +0200 Subject: [PATCH] ParaCrystal 1D view is added --- GUI/coregui/Models/DomainObjectBuilder.cpp | 23 ++++++++++++++++--- GUI/coregui/Models/DomainObjectBuilder.h | 2 ++ GUI/coregui/Models/GUIObjectBuilder.cpp | 7 ------ GUI/coregui/Models/TransformToDomain.cpp | 15 ++++++++++++ GUI/coregui/Models/TransformToDomain.h | 6 ++--- .../MaterialEditor/MaterialUtils.cpp | 8 +++---- 6 files changed, 44 insertions(+), 17 deletions(-) diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp index dcd6a4d2e8e..b767c1f09dd 100644 --- a/GUI/coregui/Models/DomainObjectBuilder.cpp +++ b/GUI/coregui/Models/DomainObjectBuilder.cpp @@ -15,6 +15,8 @@ #include "DomainObjectBuilder.h" #include "TransformToDomain.h" +#include "GUIHelpers.h" +#include <QDebug> #include <boost/scoped_ptr.hpp> @@ -87,16 +89,31 @@ ParticleLayout *DomainObjectBuilder::buildParticleLayout( result->addParticle(*particle, depth, abundance); } } - } + else if(children[i]->modelType().startsWith("InterferenceFunction")) { + boost::scoped_ptr<IInterferenceFunction> + interference(buildInterferenceFunction(*children[i])); + if (interference.get()) { + result->addInterferenceFunction(*interference); + } + } + else { + throw GUIHelpers::Error("DomainObjectBuilder::buildParticleLayout() -> Error! Not implemented"); + } + } return result; } Particle *DomainObjectBuilder::buildParticle(const ParameterizedItem &item, double &depth, double &abundance) const { - Particle *particle = TransformToDomain::createParticle(item, depth, abundance); - return particle; + Particle *result = TransformToDomain::createParticle(item, depth, abundance); + return result; } +IInterferenceFunction *DomainObjectBuilder::buildInterferenceFunction(const ParameterizedItem &item) const +{ + IInterferenceFunction *result = TransformToDomain::createInterferenceFunction(item); + return result; +} diff --git a/GUI/coregui/Models/DomainObjectBuilder.h b/GUI/coregui/Models/DomainObjectBuilder.h index ddd3fa52e4d..1ede82b8892 100644 --- a/GUI/coregui/Models/DomainObjectBuilder.h +++ b/GUI/coregui/Models/DomainObjectBuilder.h @@ -17,6 +17,7 @@ #define DOMAINOBJECTBUILDER_H #include "Samples.h" +#include "InterferenceFunctions.h" #include "ParameterizedItem.h" class DomainObjectBuilder @@ -36,6 +37,7 @@ private: Layer *buildLayer(const ParameterizedItem &item) const; ParticleLayout *buildParticleLayout(const ParameterizedItem &item) const; Particle *buildParticle(const ParameterizedItem &item, double &depth, double &abundance) const; + IInterferenceFunction *buildInterferenceFunction(const ParameterizedItem &item) const; ISample *mp_sample; }; diff --git a/GUI/coregui/Models/GUIObjectBuilder.cpp b/GUI/coregui/Models/GUIObjectBuilder.cpp index 92f9ec1bac1..71717db1903 100644 --- a/GUI/coregui/Models/GUIObjectBuilder.cpp +++ b/GUI/coregui/Models/GUIObjectBuilder.cpp @@ -295,14 +295,7 @@ void GUIObjectBuilder::visit(const FormFactorTruncatedSpheroid *sample) void GUIObjectBuilder::visit(const InterferenceFunction1DParaCrystal *sample) { - qDebug() << "GUIObjectBuilder::visit(const InterferenceFunction1DParaCrystal *)" << getLevel(); - - qDebug() << " "; - qDebug() << " "; - qDebug() << " "; - ParameterizedItem *parent = m_levelToParent[getLevel()-1]; - qDebug() << " " << parent->itemName() << parent->modelType(); Q_ASSERT(parent); ParameterizedItem *item = m_sessionModel->insertNewItem("InterferenceFunction1DParaCrystal", m_sessionModel->indexOfItem(parent)); Q_ASSERT(item); diff --git a/GUI/coregui/Models/TransformToDomain.cpp b/GUI/coregui/Models/TransformToDomain.cpp index 829f154047f..1aafb8683d8 100644 --- a/GUI/coregui/Models/TransformToDomain.cpp +++ b/GUI/coregui/Models/TransformToDomain.cpp @@ -102,4 +102,19 @@ IFormFactor *TransformToDomain::createFormFactor(const ParameterizedItem &item) } +IInterferenceFunction *TransformToDomain::createInterferenceFunction(const ParameterizedItem &item) +{ + IInterferenceFunction *result(0); + + if(item.modelType() == "InterferenceFunction1DParaCrystal") { + result = new InterferenceFunction1DParaCrystal( + item.property("PeakDistance").toDouble(), + item.property("Width").toDouble(), + item.property("CorrLength").toDouble() + ); + } + + return result; +} + diff --git a/GUI/coregui/Models/TransformToDomain.h b/GUI/coregui/Models/TransformToDomain.h index 0fc54dd0b3c..0ee669a7c6f 100644 --- a/GUI/coregui/Models/TransformToDomain.h +++ b/GUI/coregui/Models/TransformToDomain.h @@ -17,18 +17,18 @@ #define TRANSFORMTODOMAIN_H #include "Samples.h" +#include "InterferenceFunctions.h" #include "ParameterizedItem.h" namespace TransformToDomain { +IMaterial *createDomainMaterial(const ParameterizedItem &item); MultiLayer *createMultiLayer(const ParameterizedItem &item); Layer *createLayer(const ParameterizedItem &item); ParticleLayout *createParticleLayout(const ParameterizedItem &item); Particle *createParticle(const ParameterizedItem &item, double &depth, double &abundance); IFormFactor *createFormFactor(const ParameterizedItem &item); - -IMaterial *createDomainMaterial(const ParameterizedItem &item); - +IInterferenceFunction *createInterferenceFunction(const ParameterizedItem &item); } #endif // TRANSFORMTODOMAIN_H diff --git a/GUI/coregui/Views/Components/MaterialEditor/MaterialUtils.cpp b/GUI/coregui/Views/Components/MaterialEditor/MaterialUtils.cpp index e7d46f6e17c..aada5883f3f 100644 --- a/GUI/coregui/Views/Components/MaterialEditor/MaterialUtils.cpp +++ b/GUI/coregui/Views/Components/MaterialEditor/MaterialUtils.cpp @@ -10,13 +10,13 @@ QColor MaterialUtils::suggestMaterialColor(const QString &name) { - if(name == QStringLiteral("Air") ) { + if(name.contains("Air") ) { return QColor(179, 242, 255); - } else if(name == QStringLiteral("Substrate") ) { + } else if(name.contains("Substrate") ) { return QColor(205,102,0); - } else if ( name == QStringLiteral("Default") ) { + } else if ( name.contains("Default") ) { return QColor(Qt::green); - } else if ( name == QStringLiteral("Particle") ) { + } else if ( name.contains("Particle") ) { return QColor(146, 198, 255); } return DesignerHelper::getRandomColor(); -- GitLab