diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp index dcd6a4d2e8e4eee94d412132b1980ec832b437d6..b767c1f09ddbbc53e2c4b7b802f94697b2da2ed9 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 ddd3fa52e4d7e4708cf730a0d919926f244abd89..1ede82b8892225aadc8e74f715d5f2d758d4c767 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 92f9ec1bac1c5f97f4ae527376b601ab22de737f..71717db190380182f54679d6ab568063796c1e31 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 829f154047f7bc051dbecb64cf7821e48c787ccc..1aafb8683d86e74e57bda10359cf7e74b753e97a 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 0fc54dd0b3c8f26eed54525fa62bb6b9b7aebdba..0ee669a7c6fd07571daace5dea72dd982ce55acb 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 e7d46f6e17ce30aa2c1f5ed9d2cb9da686d60ea6..aada5883f3fc340d5065e6f192bad2764da317e4 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();