Skip to content
Snippets Groups Projects
Commit dde251cd authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

use inheritance to unify calls to createUnitConverter()

parent c2412c50
No related branches found
No related tags found
1 merge request!51simplify creation of UnitConverter%s
Pipeline #35625 passed
......@@ -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)
......
......@@ -125,9 +125,3 @@ DomainObjectBuilder::buildInstrument(const InstrumentItem& instrumentItem)
{
return instrumentItem.createInstrument();
}
std::unique_ptr<IUnitConverter>
DomainObjectBuilder::createUnitConverter(const InstrumentItem* instrumentItem)
{
return instrumentItem->createUnitConverter();
}
......@@ -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
......@@ -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);
......
......@@ -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());
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment