From 7c3f086ef84b700f10eb7c4709a451b89aef381e Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Tue, 11 Apr 2023 14:36:22 +0200
Subject: [PATCH] make Datafield pointers const; new non-const accessor
 ptr_converted_field

---
 GUI/Model/Data/DataItem.h               | 2 +-
 GUI/Model/Data/DataItemUtil.cpp         | 2 +-
 GUI/Model/Job/JobItem.cpp               | 8 ++++----
 GUI/View/PlotSpecular/SpecularPlot.cpp  | 2 +-
 GUI/View/PlotUtil/ColorMap.cpp          | 2 +-
 GUI/View/PlotUtil/SavePlotAssistant.cpp | 4 ++--
 GUI/View/PlotUtil/SavePlotAssistant.h   | 3 ++-
 7 files changed, 12 insertions(+), 11 deletions(-)

diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index e9551fa08d3..37d16e57949 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -43,7 +43,7 @@ public:
     const QString TYPE{"uninitialized"};
 
     // Returns datafield, owned by this class
-    Datafield* converted_field() { return m_datafield.get(); }
+    Datafield* ptr_converted_field() { return m_datafield.get(); }
     const Datafield* converted_field() const { return m_datafield.get(); }
 
     //! The given pointer becomes owned by this class!!
diff --git a/GUI/Model/Data/DataItemUtil.cpp b/GUI/Model/Data/DataItemUtil.cpp
index 1ee627c1087..b90dc56b5bc 100644
--- a/GUI/Model/Data/DataItemUtil.cpp
+++ b/GUI/Model/Data/DataItemUtil.cpp
@@ -53,7 +53,7 @@ ComboProperty availableUnits(const ICoordSystem& converter)
 void GUI::Model::DataItemUtil::updateDataAxes(DataItem* dataItem, const ICoordSystem& converter)
 {
     ASSERT(dataItem);
-    Datafield* oldData = dataItem->converted_field();
+    const Datafield* oldData = dataItem->converted_field();
     if (!oldData)
         return;
 
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index 360611e3fa2..52059bf3d99 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -87,8 +87,8 @@ void JobItem::setStatus(JobStatus status)
     m_status = status;
     if (status == JobStatus::Failed) {
         if (DataItem* dataItem = simulatedDataItem()) {
-            if (dataItem->converted_field())
-                dataItem->converted_field()->setAllTo(0.0);
+            if (Datafield* df = dataItem->ptr_converted_field())
+                df->setAllTo(0.0);
             emit dataItem->datafieldChanged();
         }
     }
@@ -384,14 +384,14 @@ void JobItem::cropRealData()
     // Adjust real data to the size of region of interest
     IntensityDataItem* intensityItem = realItem()->intensityDataItem();
 
-    std::unique_ptr<Datafield> origData(intensityItem->converted_field()->clone());
+    const Datafield* origData = intensityItem->converted_field();
 
     const auto converter = iiI->createCoordSystem();
     ASSERT(converter);
     GUI::Model::DataItemUtil::createDefaultDetectorMap(intensityItem, *converter);
 
     iiI->normalDetector()->iterateOverNonMaskedPoints([&](IDetector::const_iterator it) {
-        auto* cropped_data = intensityItem->converted_field();
+        Datafield* cropped_data = intensityItem->ptr_converted_field();
         (*cropped_data)[it.roiIndex()] = (*origData)[it.detectorIndex()];
     });
 
diff --git a/GUI/View/PlotSpecular/SpecularPlot.cpp b/GUI/View/PlotSpecular/SpecularPlot.cpp
index 512336d368f..0f716be639b 100644
--- a/GUI/View/PlotSpecular/SpecularPlot.cpp
+++ b/GUI/View/PlotSpecular/SpecularPlot.cpp
@@ -148,7 +148,7 @@ void SpecularPlot::initPlot()
             QCPScatterStyle(item->scatter(), item->scatterSize()));
 
         // create error bars
-        Datafield* data = item->converted_field();
+        const Datafield* data = item->converted_field();
         if (data && data->hasErrorSigmas()) {
             QCPErrorBars* errorBars = new QCPErrorBars(m_custom_plot->xAxis, m_custom_plot->yAxis);
             m_errorbar_map.insert(item, errorBars);
diff --git a/GUI/View/PlotUtil/ColorMap.cpp b/GUI/View/PlotUtil/ColorMap.cpp
index e0c753fcce2..75f719e7ca6 100644
--- a/GUI/View/PlotUtil/ColorMap.cpp
+++ b/GUI/View/PlotUtil/ColorMap.cpp
@@ -357,7 +357,7 @@ void ColorMap::setDataFromItem()
 {
     if (!intensityItem())
         return;
-    Datafield* data = intensityItem()->converted_field();
+    const Datafield* data = intensityItem()->converted_field();
     if (!data) {
         m_colorMap->data()->clear();
         return;
diff --git a/GUI/View/PlotUtil/SavePlotAssistant.cpp b/GUI/View/PlotUtil/SavePlotAssistant.cpp
index 64b4691ccc1..1801dbfbf27 100644
--- a/GUI/View/PlotUtil/SavePlotAssistant.cpp
+++ b/GUI/View/PlotUtil/SavePlotAssistant.cpp
@@ -72,7 +72,7 @@ bool isPdfFile(const QString& fileName)
     return fileName.endsWith(pdf_extension, Qt::CaseInsensitive);
 }
 
-void saveToFile(const QString& fileName, QCustomPlot* plot, Datafield* output_data)
+void saveToFile(const QString& fileName, QCustomPlot* plot, const Datafield* output_data)
 {
     if (isPngFile(fileName))
         plot->savePng(fileName);
@@ -130,7 +130,7 @@ QString composeFileName(const QString& fileName, const QString& filterName)
 } // namespace
 
 
-void GUI::Plot::savePlot(const QString& dirname, QCustomPlot* plot, Datafield* output_data)
+void GUI::Plot::savePlot(const QString& dirname, QCustomPlot* plot, const Datafield* output_data)
 
 {
     QString selectedFilter("*.png");
diff --git a/GUI/View/PlotUtil/SavePlotAssistant.h b/GUI/View/PlotUtil/SavePlotAssistant.h
index ff25a490239..109aa9173ea 100644
--- a/GUI/View/PlotUtil/SavePlotAssistant.h
+++ b/GUI/View/PlotUtil/SavePlotAssistant.h
@@ -22,7 +22,8 @@ class Datafield;
 
 namespace GUI::Plot {
 
-void savePlot(const QString& dirname, QCustomPlot* plot, Datafield* output_data);
+void savePlot(const QString& dirname, QCustomPlot* plot, const Datafield* output_data);
+
 };
 
 #endif // BORNAGAIN_GUI_VIEW_PLOTUTIL_SAVEPLOTASSISTANT_H
-- 
GitLab