From 8d091d7e4856cad3d74dcf103c9bc75abd08d499 Mon Sep 17 00:00:00 2001 From: Dmitry Yurov <d.yurov@fz-juelich.de> Date: Tue, 4 Dec 2018 13:53:29 +0100 Subject: [PATCH] update to real data via SpecularBeamItem::updateToData Redmine: #2217 --- GUI/coregui/Models/BeamItems.cpp | 8 ++++++++ GUI/coregui/Models/InstrumentItems.cpp | 9 +++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/GUI/coregui/Models/BeamItems.cpp b/GUI/coregui/Models/BeamItems.cpp index f57f466488c..df83ac2aa24 100644 --- a/GUI/coregui/Models/BeamItems.cpp +++ b/GUI/coregui/Models/BeamItems.cpp @@ -22,6 +22,7 @@ #include "FootprintItems.h" #include "GroupItem.h" #include "GUIHelpers.h" +#include "IAxis.h" #include "ParameterTranslators.h" #include "PointwiseAxisItem.h" #include "SessionItemUtils.h" @@ -194,6 +195,13 @@ void SpecularBeamItem::updateFileName(const QString& filename) void SpecularBeamItem::updateToData(const IAxis& axis, QString units) { + if (units == Constants::UnitsNbins) { + inclinationAxisGroup()->setCurrentType(Constants::BasicAxisType); + auto axis_item = currentInclinationAxisItem(); + axis_item->setItemValue(BasicAxisItem::P_NBINS, static_cast<int>(axis.size())); + return; + } + auto axis_group = inclinationAxisGroup(); axis_group->setCurrentType(Constants::PointwiseAxisType); auto axis_item = static_cast<PointwiseAxisItem*>(axis_group->currentItem()); diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp index ad79883a978..e9717a2ef91 100644 --- a/GUI/coregui/Models/InstrumentItems.cpp +++ b/GUI/coregui/Models/InstrumentItems.cpp @@ -147,13 +147,10 @@ void SpecularInstrumentItem::setShape(const std::vector<int>& data_shape) void SpecularInstrumentItem::updateToRealData(const RealDataItem* item) { - if (item->getItemValue(RealDataItem::P_NATIVE_UNITS).toString() == Constants::UnitsNbins) { - beamItem()->inclinationAxisGroup()->setCurrentType(Constants::BasicAxisType); - setShape(item->shape()); - return; - } + if (shape().size() != item->shape().size()) + throw GUIHelpers::Error("Error in SpecularInstrumentItem::updateToRealData: The type " + "of instrument is incompatible with passed data shape."); - // the case of dimensional units in user data QString units = item->getItemValue(RealDataItem::P_NATIVE_UNITS).toString(); const auto& data = item->nativeData()->getOutputData()->getAxis(0); beamItem()->updateToData(data, units); -- GitLab