diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp index 0e3d99f27cb32097ac76f7e3b2b4743c3c7f7172..b2ef69b127072d79b81083b81560725d068b377a 100644 --- a/GUI/coregui/Models/DomainObjectBuilder.cpp +++ b/GUI/coregui/Models/DomainObjectBuilder.cpp @@ -3,7 +3,7 @@ // BornAgain: simulate and fit scattering at grazing incidence // //! @file GUI/coregui/Models/DomainObjectBuilder.cpp -//! @brief Implements class DomainObjectBuilder +//! @brief Implements DomainObjectBuilder namespace //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) @@ -15,25 +15,18 @@ #include "DomainObjectBuilder.h" #include "BeamItem.h" #include "ComboProperty.h" -#include "DetectorItems.h" -#include "GISASSimulation.h" #include "GUIHelpers.h" -#include "IInterferenceFunction.h" -#include "Instrument.h" #include "InstrumentItems.h" #include "InterferenceFunctionItems.h" #include "LayerItem.h" -#include "MultiLayer.h" #include "ParticleDistributionItem.h" #include "ParticleLayoutItem.h" #include "TransformToDomain.h" - -std::unique_ptr<MultiLayer> DomainObjectBuilder::buildMultiLayer( - const SessionItem& multilayer_item) const +std::unique_ptr<MultiLayer> DomainObjectBuilder::buildMultiLayer(const SessionItem& multilayer_item) { auto P_multilayer = TransformToDomain::createMultiLayer(multilayer_item); - QVector<SessionItem *> children = multilayer_item.children(); + QVector<SessionItem*> children = multilayer_item.children(); for (int i = 0; i < children.size(); ++i) { if (children[i]->modelType() == Constants::LayerType) { auto P_layer = buildLayer(*children[i]); @@ -52,10 +45,10 @@ std::unique_ptr<MultiLayer> DomainObjectBuilder::buildMultiLayer( return P_multilayer; } -std::unique_ptr<Layer> DomainObjectBuilder::buildLayer(const SessionItem& item) const +std::unique_ptr<Layer> DomainObjectBuilder::buildLayer(const SessionItem& item) { auto P_layer = TransformToDomain::createLayer(item); - QVector<SessionItem *> children = item.children(); + QVector<SessionItem*> children = item.children(); for (int i = 0; i < children.size(); ++i) { if (children[i]->modelType() == Constants::ParticleLayoutType) { auto P_layout = buildParticleLayout(*children[i]); @@ -67,11 +60,10 @@ std::unique_ptr<Layer> DomainObjectBuilder::buildLayer(const SessionItem& item) return P_layer; } -std::unique_ptr<ParticleLayout> DomainObjectBuilder::buildParticleLayout( - const SessionItem& item) const +std::unique_ptr<ParticleLayout> DomainObjectBuilder::buildParticleLayout(const SessionItem& item) { auto P_layout = TransformToDomain::createParticleLayout(item); - QVector<SessionItem *> children = item.getItems(); + QVector<SessionItem*> children = item.getItems(); for (int i = 0; i < children.size(); ++i) { auto P_particle = TransformToDomain::createIParticle(*children[i]); if (P_particle) { @@ -79,10 +71,9 @@ std::unique_ptr<ParticleLayout> DomainObjectBuilder::buildParticleLayout( continue; } if (children[i]->modelType() == Constants::ParticleDistributionType) { - auto prop - = children[i] - ->getItemValue(ParticleDistributionItem::P_DISTRIBUTED_PARAMETER) - .value<ComboProperty>(); + auto prop = children[i] + ->getItemValue(ParticleDistributionItem::P_DISTRIBUTED_PARAMETER) + .value<ComboProperty>(); QString par_name = prop.getValue(); if (par_name == ParticleDistributionItem::NO_SELECTION) { auto grandchildren = children[i]->getItems(); @@ -120,14 +111,15 @@ std::unique_ptr<ParticleLayout> DomainObjectBuilder::buildParticleLayout( } std::unique_ptr<IInterferenceFunction> -DomainObjectBuilder::buildInterferenceFunction(const SessionItem& item) const +DomainObjectBuilder::buildInterferenceFunction(const SessionItem& item) { auto iffItem = dynamic_cast<const InterferenceFunctionItem*>(&item); Q_ASSERT(iffItem); return iffItem->createInterferenceFunction(); } -std::unique_ptr<Instrument> DomainObjectBuilder::buildInstrument(const InstrumentItem& instrumentItem) const +std::unique_ptr<Instrument> +DomainObjectBuilder::buildInstrument(const InstrumentItem& instrumentItem) { return instrumentItem.createInstrument(); } diff --git a/GUI/coregui/Models/DomainObjectBuilder.h b/GUI/coregui/Models/DomainObjectBuilder.h index f0a636fa5a1113680806da26b0b7ee373cdeb5d2..80d66ea0cd77a0f0b8e43940907776e558b92ad0 100644 --- a/GUI/coregui/Models/DomainObjectBuilder.h +++ b/GUI/coregui/Models/DomainObjectBuilder.h @@ -3,7 +3,7 @@ // BornAgain: simulate and fit scattering at grazing incidence // //! @file GUI/coregui/Models/DomainObjectBuilder.h -//! @brief Defines class DomainObjectBuilder +//! @brief Defines DomainObjectBuilder namespace //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) @@ -18,24 +18,22 @@ #include "WinDllMacros.h" #include <memory> -class Instrument; class MultiLayer; class Layer; +class Instrument; class ParticleLayout; class IInterferenceFunction; -class Beam; class SessionItem; class InstrumentItem; -class BA_CORE_API_ DomainObjectBuilder +namespace DomainObjectBuilder { -public: - std::unique_ptr<MultiLayer> buildMultiLayer(const SessionItem &multilayer_item) const; - std::unique_ptr<Layer> buildLayer(const SessionItem &item) const; - std::unique_ptr<ParticleLayout> buildParticleLayout(const SessionItem &item) const; - std::unique_ptr<IInterferenceFunction> - buildInterferenceFunction(const SessionItem &item) const; - std::unique_ptr<Instrument> buildInstrument(const InstrumentItem& instrumentItem) const; +BA_CORE_API_ std::unique_ptr<MultiLayer> buildMultiLayer(const SessionItem& multilayer_item); +BA_CORE_API_ std::unique_ptr<Layer> buildLayer(const SessionItem& item); +BA_CORE_API_ std::unique_ptr<ParticleLayout> buildParticleLayout(const SessionItem& item); +BA_CORE_API_ std::unique_ptr<IInterferenceFunction> +buildInterferenceFunction(const SessionItem& item); +BA_CORE_API_ std::unique_ptr<Instrument> buildInstrument(const InstrumentItem& instrumentItem); }; #endif // DOMAINOBJECTBUILDER_H diff --git a/GUI/coregui/Models/DomainSimulationBuilder.cpp b/GUI/coregui/Models/DomainSimulationBuilder.cpp index 27005be6c0d95e69926938f871fd4b635f6b0274..ec8c0de55f3f53830943fb5aafec92332af8827d 100644 --- a/GUI/coregui/Models/DomainSimulationBuilder.cpp +++ b/GUI/coregui/Models/DomainSimulationBuilder.cpp @@ -36,12 +36,11 @@ std::unique_ptr<Simulation> DomainSimulationBuilder::createSimulation(const Mult " or InstrumentItem is not defined."); throw GUIHelpers::Error(message); } - DomainObjectBuilder builder; if (auto gisasInstrument = dynamic_cast<const GISASInstrumentItem*>(instrumentItem)) { std::unique_ptr<GISASSimulation> result(new GISASSimulation); - auto P_multilayer = builder.buildMultiLayer(*sampleItem); - auto P_instrument = builder.buildInstrument(*gisasInstrument); + auto P_multilayer = DomainObjectBuilder::buildMultiLayer(*sampleItem); + auto P_instrument = DomainObjectBuilder::buildInstrument(*gisasInstrument); result->setSample(*P_multilayer); result->setInstrument(*P_instrument); TransformToDomain::addDistributionParametersToSimulation(*gisasInstrument->beamItem(), result.get()); diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp index 2a838d7e3edd0e4c56ebcda7e1cb82015cd30b0e..80d00e5a928a1da4dfef22d78e49a8e3b6c7976e 100644 --- a/GUI/coregui/Models/JobItemUtils.cpp +++ b/GUI/coregui/Models/JobItemUtils.cpp @@ -154,8 +154,7 @@ AxesUnits JobItemUtils::preferableGUIAxesUnits(AxesUnits default_units) void JobItemUtils::setIntensityItemAxesUnits(IntensityDataItem* intensityItem, const GISASInstrumentItem* instrumentItem) { - DomainObjectBuilder builder; - auto instrument = builder.buildInstrument(*instrumentItem); + auto instrument = DomainObjectBuilder::buildInstrument(*instrumentItem); instrument->initDetector(); setIntensityItemAxesUnits(intensityItem, instrument->getDetector()); } @@ -201,8 +200,7 @@ void JobItemUtils::updateAxesTitle(IntensityDataItem* intensityItem) void JobItemUtils::createDefaultDetectorMap(IntensityDataItem* intensityItem, const GISASInstrumentItem* instrumentItem) { - DomainObjectBuilder builder; - auto instrument = builder.buildInstrument(*instrumentItem); + auto instrument = DomainObjectBuilder::buildInstrument(*instrumentItem); instrument->initDetector(); AxesUnits units = instrument->getDetector()->defaultAxesUnits(); auto detector = instrument->getDetector(); @@ -217,8 +215,7 @@ void JobItemUtils::createDefaultDetectorMap(IntensityDataItem* intensityItem, OutputData<double>* JobItemUtils::createDetectorMap(const GISASInstrumentItem* instrumentItem, AxesUnits units) { - DomainObjectBuilder builder; - auto instrument = builder.buildInstrument(*instrumentItem); + auto instrument = DomainObjectBuilder::buildInstrument(*instrumentItem); instrument->initDetector(); if (units == AxesUnits::DEFAULT) diff --git a/GUI/coregui/Models/JobModelFunctions.cpp b/GUI/coregui/Models/JobModelFunctions.cpp index fd05c995245c9e026cd229abec80c07c3c828cc1..bdf54a109eb05979445e0a4def6c81ac589f3dc5 100644 --- a/GUI/coregui/Models/JobModelFunctions.cpp +++ b/GUI/coregui/Models/JobModelFunctions.cpp @@ -107,8 +107,7 @@ void JobModelFunctions::cropRealData(JobItem *jobItem) { // adjusting real data to the size of region of interest IntensityDataItem *intensityItem = realData->intensityDataItem(); - DomainObjectBuilder builder; - auto instrument = builder.buildInstrument(*jobItem->instrumentItem()); + auto instrument = DomainObjectBuilder::buildInstrument(*jobItem->instrumentItem()); instrument->initDetector(); AxesUnits requested_units diff --git a/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp b/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp index ce6f4cfc195521a23404c57ee3f1c98513192005..d083af21877061669db562d69f4ae43955242b1c 100644 --- a/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp +++ b/GUI/coregui/Views/InfoWidgets/PySampleWidget.cpp @@ -162,9 +162,8 @@ QString PySampleWidget::generateCodeSnippet() QString result; for(const MultiLayerItem* sampleItem : m_sampleModel->topItems<MultiLayerItem>()) { - DomainObjectBuilder builder; try { - auto multilayer = builder.buildMultiLayer(*sampleItem); + auto multilayer = DomainObjectBuilder::buildMultiLayer(*sampleItem); if (!result.isEmpty()) result.append("\n"); result.append(QString::fromStdString(