From 142152dd9e9a0ab348a0c37731d57d618368994e Mon Sep 17 00:00:00 2001
From: Dmitry Yurov <d.yurov@fz-juelich.de>
Date: Tue, 4 Dec 2018 13:15:04 +0100
Subject: [PATCH] Move native axis handling from instrument down to beam item

Redmine: #2217
---
 GUI/coregui/Models/BeamItems.cpp       |  8 ++++++++
 GUI/coregui/Models/BeamItems.h         |  2 ++
 GUI/coregui/Models/InstrumentItems.cpp | 14 ++++++--------
 3 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/GUI/coregui/Models/BeamItems.cpp b/GUI/coregui/Models/BeamItems.cpp
index 25a2b440c31..f57f466488c 100644
--- a/GUI/coregui/Models/BeamItems.cpp
+++ b/GUI/coregui/Models/BeamItems.cpp
@@ -192,6 +192,14 @@ void SpecularBeamItem::updateFileName(const QString& filename)
     item<SpecularBeamInclinationItem>(BeamItem::P_INCLINATION_ANGLE).updateFileName(filename);
 }
 
+void SpecularBeamItem::updateToData(const IAxis& axis, QString units)
+{
+    auto axis_group = inclinationAxisGroup();
+    axis_group->setCurrentType(Constants::PointwiseAxisType);
+    auto axis_item = static_cast<PointwiseAxisItem*>(axis_group->currentItem());
+    axis_item->init(axis, units);
+}
+
 // GISAS beam item
 /* ------------------------------------------------------------------------- */
 
diff --git a/GUI/coregui/Models/BeamItems.h b/GUI/coregui/Models/BeamItems.h
index a84f66ba1fd..73435a2e409 100644
--- a/GUI/coregui/Models/BeamItems.h
+++ b/GUI/coregui/Models/BeamItems.h
@@ -21,6 +21,7 @@ class BasicAxisItem;
 class Beam;
 class FootprintItem;
 class GroupItem;
+class IAxis;
 
 class BA_CORE_API_ BeamItem : public SessionItem
 {
@@ -70,6 +71,7 @@ public:
     FootprintItem* currentFootprintItem() const;
 
     void updateFileName(const QString& filename);
+    void updateToData(const IAxis& axis, QString units);
 };
 
 class BA_CORE_API_ GISASBeamItem : public BeamItem
diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp
index 7a7ba237627..ad79883a978 100644
--- a/GUI/coregui/Models/InstrumentItems.cpp
+++ b/GUI/coregui/Models/InstrumentItems.cpp
@@ -150,15 +150,13 @@ void SpecularInstrumentItem::updateToRealData(const RealDataItem* item)
     if (item->getItemValue(RealDataItem::P_NATIVE_UNITS).toString() == Constants::UnitsNbins) {
         beamItem()->inclinationAxisGroup()->setCurrentType(Constants::BasicAxisType);
         setShape(item->shape());
-    } else {
-        QString units = item->getItemValue(RealDataItem::P_NATIVE_UNITS).toString();
-        const auto& data = item->nativeData()->getOutputData()->getAxis(0);
-
-        auto axis_group = beamItem()->inclinationAxisGroup();
-        axis_group->setCurrentType(Constants::PointwiseAxisType);
-        auto axis = dynamic_cast<PointwiseAxisItem*>(axis_group->currentItem());
-        axis->init(data, units);
+        return;
     }
+
+    // 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);
 }
 
 bool SpecularInstrumentItem::alignedWith(const RealDataItem* item) const
-- 
GitLab