From dde251cde32dce02dcecfcdd510fcd22ebe7e93c Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Fri, 23 Apr 2021 15:38:26 +0200 Subject: [PATCH] use inheritance to unify calls to createUnitConverter() --- GUI/coregui/Models/DataViewUtils.cpp | 3 ++- GUI/coregui/Models/DomainObjectBuilder.cpp | 6 ------ GUI/coregui/Models/DomainObjectBuilder.h | 3 +-- GUI/coregui/Models/JobItemUtils.cpp | 6 +++--- GUI/coregui/Models/JobModelFunctions.cpp | 2 +- 5 files changed, 7 insertions(+), 13 deletions(-) diff --git a/GUI/coregui/Models/DataViewUtils.cpp b/GUI/coregui/Models/DataViewUtils.cpp index 6ba163040da..6094ffa5776 100644 --- a/GUI/coregui/Models/DataViewUtils.cpp +++ b/GUI/coregui/Models/DataViewUtils.cpp @@ -18,6 +18,7 @@ #include "GUI/coregui/Models/DataItem.h" #include "GUI/coregui/Models/DataPropertyContainer.h" #include "GUI/coregui/Models/DomainObjectBuilder.h" +#include "GUI/coregui/Models/InstrumentItems.h" #include "GUI/coregui/Models/JobItem.h" #include "GUI/coregui/Models/JobItemUtils.h" @@ -28,7 +29,7 @@ std::unique_ptr<IUnitConverter> getConverter(Data1DViewItem* view_item) auto job_item = view_item->jobItem(); ASSERT(job_item->instrumentItem()); - return DomainObjectBuilder::createUnitConverter(job_item->instrumentItem()); + return job_item->instrumentItem()->createUnitConverter(); } Axes::Units selectedUnits(Data1DViewItem* view_item) diff --git a/GUI/coregui/Models/DomainObjectBuilder.cpp b/GUI/coregui/Models/DomainObjectBuilder.cpp index cd6f7f19100..de7c3e3671b 100644 --- a/GUI/coregui/Models/DomainObjectBuilder.cpp +++ b/GUI/coregui/Models/DomainObjectBuilder.cpp @@ -125,9 +125,3 @@ DomainObjectBuilder::buildInstrument(const InstrumentItem& instrumentItem) { return instrumentItem.createInstrument(); } - -std::unique_ptr<IUnitConverter> -DomainObjectBuilder::createUnitConverter(const InstrumentItem* instrumentItem) -{ - return instrumentItem->createUnitConverter(); -} diff --git a/GUI/coregui/Models/DomainObjectBuilder.h b/GUI/coregui/Models/DomainObjectBuilder.h index bd9f2fb152e..48264b04eae 100644 --- a/GUI/coregui/Models/DomainObjectBuilder.h +++ b/GUI/coregui/Models/DomainObjectBuilder.h @@ -27,14 +27,13 @@ class InstrumentItem; class IUnitConverter; namespace DomainObjectBuilder { + std::unique_ptr<MultiLayer> buildMultiLayer(const SessionItem& multilayer_item); std::unique_ptr<Layer> buildLayer(const SessionItem& item); std::unique_ptr<ParticleLayout> buildParticleLayout(const SessionItem& item); std::unique_ptr<IInterferenceFunction> buildInterferenceFunction(const SessionItem& item); std::unique_ptr<Instrument> buildInstrument(const InstrumentItem& instrumentItem); -//! Creates a unit converter corresponding to the given instrument item -std::unique_ptr<IUnitConverter> createUnitConverter(const InstrumentItem* instrumentItem); }; // namespace DomainObjectBuilder #endif // BORNAGAIN_GUI_COREGUI_MODELS_DOMAINOBJECTBUILDER_H diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp index 4f99a8075ee..03f0989b8d6 100644 --- a/GUI/coregui/Models/JobItemUtils.cpp +++ b/GUI/coregui/Models/JobItemUtils.cpp @@ -67,7 +67,7 @@ void JobItemUtils::updateDataAxes(DataItem* intensityItem, const InstrumentItem* Axes::Units requested_units = axesUnitsFromName(intensityItem->selectedAxesUnits()); - const auto converter = DomainObjectBuilder::createUnitConverter(instrumentItem); + const auto converter = instrumentItem->createUnitConverter(); auto newData = converter->createOutputData(requested_units); newData->setRawDataVector(intensityItem->getOutputData()->getRawDataVector()); @@ -98,7 +98,7 @@ Axes::Units JobItemUtils::axesUnitsFromName(const QString& name) void JobItemUtils::setIntensityItemAxesUnits(DataItem* intensityItem, const InstrumentItem* instrumentItem) { - const auto converter = DomainObjectBuilder::createUnitConverter(instrumentItem); + const auto converter = instrumentItem->createUnitConverter(); if (!converter) return; setIntensityItemAxesUnits(intensityItem, *converter); @@ -114,7 +114,7 @@ void JobItemUtils::setIntensityItemAxesUnits(DataItem* intensityItem, void JobItemUtils::createDefaultDetectorMap(DataItem* intensityItem, const InstrumentItem* instrumentItem) { - const auto converter = DomainObjectBuilder::createUnitConverter(instrumentItem); + const auto converter = instrumentItem->createUnitConverter(); auto output_data = converter->createOutputData(converter->defaultUnits()); intensityItem->setOutputData(output_data.release()); setIntensityItemAxesUnits(intensityItem, *converter); diff --git a/GUI/coregui/Models/JobModelFunctions.cpp b/GUI/coregui/Models/JobModelFunctions.cpp index e0e1544ef63..3e0c1908596 100644 --- a/GUI/coregui/Models/JobModelFunctions.cpp +++ b/GUI/coregui/Models/JobModelFunctions.cpp @@ -78,7 +78,7 @@ void JobModelFunctions::initDataView(JobItem* job_item) // also triggers Data1DViewItem::setAxesRangeToData and DataViewUtils::updateAxesTitle by // setting new value of P_AXES_UNITS. - auto converter = DomainObjectBuilder::createUnitConverter(job_item->instrumentItem()); + auto converter = job_item->instrumentItem()->createUnitConverter(); view_item->setItemValue(Data1DViewItem::P_AXES_UNITS, JobItemUtils::availableUnits(*converter).variant()); } -- GitLab