From c08a8fc0a7c3b953ad67dafaca9ccab96531d4c6 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Tue, 4 Jul 2023 18:13:28 +0200
Subject: [PATCH] recklessly rm Coords from GUI

---
 GUI/Model/Data/DataItem.cpp                   | 41 +------------------
 GUI/Model/Data/DataItem.h                     | 11 -----
 GUI/Model/Data/IntensityDataItem.cpp          | 10 -----
 GUI/Model/Data/IntensityDataItem.h            |  3 --
 GUI/Model/Data/SpecularDataItem.cpp           |  5 ---
 GUI/Model/Data/SpecularDataItem.h             |  3 --
 GUI/Model/Device/RealItem.cpp                 |  8 +---
 GUI/Model/Job/JobItem.cpp                     | 28 ++-----------
 GUI/View/Common/DataPropertyWidget.cpp        | 16 --------
 GUI/View/Common/DataPropertyWidget.h          |  1 -
 .../Common/IntensityDataPropertyWidget.cpp    |  4 ++
 .../SpecularDataPropertyWidget.cpp            |  2 +
 12 files changed, 11 insertions(+), 121 deletions(-)

diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp
index ff610bf0c6b..e51476084f4 100644
--- a/GUI/Model/Data/DataItem.cpp
+++ b/GUI/Model/Data/DataItem.cpp
@@ -41,7 +41,6 @@ const QString y_axis_default_name = "Y [nbins]";
 DataItem::DataItem(const QString& modelType)
     : TYPE(modelType)
     , m_fileName("undefined")
-    , m_currentCoord(Coords::NBINS)
     , m_xAxis(std::make_unique<BasicAxisItem>())
     , m_yAxis(std::make_unique<AmplitudeAxisItem>())
     , m_last_modified(QDateTime::currentDateTime())
@@ -227,27 +226,6 @@ void DataItem::copyXYRangesFromItem(DataItem* sourceItem)
     copyYRangeFromItem(sourceItem);
 }
 
-Coords DataItem::currentCoord() const
-{
-    return m_currentCoord;
-}
-
-void DataItem::setCurrentCoord(Coords coord)
-{
-    m_currentCoord = coord;
-}
-
-QString DataItem::currentAxesUnits() const
-{
-    return GUI::Util::CoordName::nameFromCoord(m_currentCoord);
-}
-
-void DataItem::setCurrentAxesUnits(const QString& units)
-{
-    m_currentCoord = GUI::Util::CoordName::coordFromName(units);
-    emit axesUnitsChanged(this);
-}
-
 const BasicAxisItem* DataItem::xAxisItem() const
 {
     return m_xAxis.get();
@@ -305,11 +283,6 @@ void DataItem::writeTo(QXmlStreamWriter* w) const
     XML::writeAttribute(w, XML::Attrib::value, m_fileName);
     w->writeEndElement();
 
-    // axes units
-    w->writeStartElement(Tag::AxesUnits);
-    XML::writeAttribute(w, XML::Attrib::value, GUI::Util::CoordName::nameFromCoord(m_currentCoord));
-    w->writeEndElement();
-
     // x axis
     w->writeStartElement(Tag::XAxis);
     m_xAxis->writeTo(w);
@@ -323,7 +296,7 @@ void DataItem::writeTo(QXmlStreamWriter* w) const
 
 void DataItem::readFrom(QXmlStreamReader* r)
 {
-    const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
+    // const uint version = XML::readUIntAttribute(r, XML::Attrib::version);
 
     while (r->readNextStartElement()) {
         QString tag = r->name().toString();
@@ -333,18 +306,6 @@ void DataItem::readFrom(QXmlStreamReader* r)
             XML::readAttribute(r, XML::Attrib::value, &m_fileName);
             XML::gotoEndElementOfTag(r, tag);
 
-            // axes units
-        } else if (tag == Tag::AxesUnits) {
-            QString axes_units;
-            if (version == 1) {
-                XML::readAttribute(r, XML::Attrib::name, &axes_units);
-                if (axes_units.isEmpty())
-                    axes_units = GUI::Util::CoordName::nameFromCoord(Coords::NBINS);
-            } else
-                XML::readAttribute(r, XML::Attrib::value, &axes_units);
-            m_currentCoord = GUI::Util::CoordName::coordFromName(axes_units);
-            XML::gotoEndElementOfTag(r, tag);
-
             // x axis
         } else if (tag == Tag::XAxis) {
             m_xAxis->readFrom(r);
diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h
index 753afb3f061..3bae33528ef 100644
--- a/GUI/Model/Data/DataItem.h
+++ b/GUI/Model/Data/DataItem.h
@@ -15,7 +15,6 @@
 #ifndef BORNAGAIN_GUI_MODEL_DATA_DATAITEM_H
 #define BORNAGAIN_GUI_MODEL_DATA_DATAITEM_H
 
-#include "Device/Coord/Tags.h"
 #include "GUI/Model/Data/ComboProperty.h"
 #include <QDateTime>
 #include <mutex>
@@ -92,15 +91,6 @@ public:
     void copyYRangeFromItem(DataItem* sourceItem);
     void copyXYRangesFromItem(DataItem* sourceItem);
 
-    // Axes units
-    Coords currentCoord() const;
-    void setCurrentCoord(Coords coord);
-    QString currentAxesUnits() const;
-    void setCurrentAxesUnits(const QString& units);
-
-    //! Updates data on the change of axes units
-    virtual void updateCoords(const ICoordSystem& converter) = 0;
-
     const BasicAxisItem* xAxisItem() const;
     BasicAxisItem* xAxisItem();
     const AmplitudeAxisItem* yAxisItem() const;
@@ -142,7 +132,6 @@ protected:
 
     QString m_fileName;
     QString m_fileDir;
-    Coords m_currentCoord;
     std::unique_ptr<BasicAxisItem> m_xAxis;
     std::unique_ptr<AmplitudeAxisItem> m_yAxis;
 
diff --git a/GUI/Model/Data/IntensityDataItem.cpp b/GUI/Model/Data/IntensityDataItem.cpp
index 9287c9526d8..8ecdafa5896 100644
--- a/GUI/Model/Data/IntensityDataItem.cpp
+++ b/GUI/Model/Data/IntensityDataItem.cpp
@@ -204,16 +204,6 @@ void IntensityDataItem::setZaxisLocked(bool state)
     return m_zAxis->setLocked(state);
 }
 
-void IntensityDataItem::updateCoords(const ICoordSystem& converter)
-{
-    MaskUnitsConverter mask_converter;
-    mask_converter.convertToNbins(this);
-
-    GUI::Model::DataItemUtil::updateDataAxes(this, converter);
-
-    mask_converter.convertFromNbins(this);
-}
-
 std::vector<int> IntensityDataItem::shape() const
 {
     return {xSize(), ySize()};
diff --git a/GUI/Model/Data/IntensityDataItem.h b/GUI/Model/Data/IntensityDataItem.h
index ae231587a22..a6c0bed138d 100644
--- a/GUI/Model/Data/IntensityDataItem.h
+++ b/GUI/Model/Data/IntensityDataItem.h
@@ -90,9 +90,6 @@ public:
     bool hasMasks() const;
     bool hasProjections() const;
 
-    //! Updates data on the change of axes units
-    void updateCoords(const ICoordSystem& converter) override;
-
     //! Returns dimensions and axesbins of data
     std::vector<int> shape() const override;
 
diff --git a/GUI/Model/Data/SpecularDataItem.cpp b/GUI/Model/Data/SpecularDataItem.cpp
index c97c9e54149..4efda224836 100644
--- a/GUI/Model/Data/SpecularDataItem.cpp
+++ b/GUI/Model/Data/SpecularDataItem.cpp
@@ -108,11 +108,6 @@ void SpecularDataItem::setLog(bool islog)
     yAxisItem()->setLogScale(islog);
 }
 
-void SpecularDataItem::updateCoords(const ICoordSystem& converter)
-{
-    GUI::Model::DataItemUtil::updateDataAxes(this, converter);
-}
-
 std::vector<int> SpecularDataItem::shape() const
 {
     return {xSize()};
diff --git a/GUI/Model/Data/SpecularDataItem.h b/GUI/Model/Data/SpecularDataItem.h
index e7f410ff4e8..cc3c744ff0b 100644
--- a/GUI/Model/Data/SpecularDataItem.h
+++ b/GUI/Model/Data/SpecularDataItem.h
@@ -42,9 +42,6 @@ public:
     bool isLog() const;
     void setLog(bool islog);
 
-    //! Updates data on the change of axes units
-    void updateCoords(const ICoordSystem&) override;
-
     //! Returns dimensions and axesbins of data
     std::vector<int> shape() const override;
 
diff --git a/GUI/Model/Device/RealItem.cpp b/GUI/Model/Device/RealItem.cpp
index 8bcbf99deeb..87dc8edd180 100644
--- a/GUI/Model/Device/RealItem.cpp
+++ b/GUI/Model/Device/RealItem.cpp
@@ -443,14 +443,8 @@ void RealItem::updateToInstrument(const InstrumentItem* instrument)
     if (!data_item)
         return;
 
-    if (instrument) {
-        // To keep the same units after linking, just comment lines.
-        // To switch to certain units on linking, uncomment lines.
-        // dataItem()->setCurrentCoord(Coords::DEGREES);
-        // const auto converter = instrument->createCoordSystem();
-        // dataItem()->updateCoords(*converter);
+    if (instrument)
         return;
-    }
 
     // instrument == nullptr => unlinking => going back to native data
     if (isSpecularData()) {
diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp
index ca62bee4388..f2d8a376548 100644
--- a/GUI/Model/Job/JobItem.cpp
+++ b/GUI/Model/Job/JobItem.cpp
@@ -293,19 +293,6 @@ void JobItem::createSimulatedDataItem()
 {
     ASSERT(!simulatedDataItem());
     m_simulatedDataItem.reset(createNewDataItem());
-
-    // Set default axes units for simulated data.
-    // Can be overriden by units from RealItem
-    if (instrumentItem()->is<SpecularInstrumentItem>())
-        m_simulatedDataItem->setCurrentCoord(Coords::QSPACE);
-    else if (instrumentItem()->is<GISASInstrumentItem>())
-        m_simulatedDataItem->setCurrentCoord(Coords::QSPACE);
-    else if (instrumentItem()->is<OffspecInstrumentItem>())
-        m_simulatedDataItem->setCurrentCoord(Coords::DEGREES); // Coords::QSPACE is unsupported
-    else if (instrumentItem()->is<DepthprobeInstrumentItem>())
-        m_simulatedDataItem->setCurrentCoord(Coords::QSPACE);
-    else
-        ASSERT(false);
 }
 
 IntensityDataItem* JobItem::intensityDataItem()
@@ -325,8 +312,7 @@ DataItem* JobItem::createDiffDataItem()
 
     // use the same axes units as for real data
     ASSERT(m_realItem);
-    Coords coords = m_realItem->dataItem()->currentCoord();
-    m_diffDataItem->setCurrentCoord(coords);
+    // TODO
 
     // update axes labels
     const auto converter = instrumentItem()->createCoordSystem();
@@ -358,7 +344,7 @@ void JobItem::copyRealItemIntoJob(const RealItem* srcRealItem)
 
     // override axes units of simulated data
     ASSERT(m_simulatedDataItem);
-    m_simulatedDataItem->setCurrentCoord(m_realItem->dataItem()->currentCoord());
+    // m_simulatedDataItem->setCurrentCoord(m_realItem->dataItem()->currentCoord());
 
     if (isSpecularJob())
         m_realItem->specularDataItem()->setRealPlotStyle();
@@ -380,18 +366,10 @@ void JobItem::adjustReaDataToJobInstrument()
         // Seems that degrees are default units in detector, so we should use the same units here,
         // but if we change 'converter->defaultUnits()' to, for example, radians, here we still
         // should use 'Coords::DEGREES'. So the reason lies deeper.
-        Coords backup_coord = m_realItem->dataItem()->currentCoord();
-        m_realItem->dataItem()->setCurrentCoord(Coords::DEGREES);
         const auto converter = instrumentItem()->createCoordSystem();
-        realItem()->dataItem()->updateCoords(*converter);
 
         importMasksFromRealItem(); // Copy masks and ROI from RealItem on board of instrument.
-
-        // convert units back
-        m_realItem->dataItem()->setCurrentCoord(backup_coord);
-        realItem()->dataItem()->updateCoords(*converter);
-
-        cropRealData(); // Crop RealItem to the region of interest.
+        cropRealData();            // Crop RealItem to the region of interest.
     }
 }
 
diff --git a/GUI/View/Common/DataPropertyWidget.cpp b/GUI/View/Common/DataPropertyWidget.cpp
index 0c1337871f9..bb8eebd5c0b 100644
--- a/GUI/View/Common/DataPropertyWidget.cpp
+++ b/GUI/View/Common/DataPropertyWidget.cpp
@@ -45,8 +45,6 @@ void DataPropertyWidget::updateItemCoords(DataItem* item)
 
     if (instrumentItem()) {
         item->blockSignals(true);
-        const auto converter = instrumentItem()->createCoordSystem();
-        item->updateCoords(*converter);
         item->blockSignals(false);
         emit item->axesUnitsReplotRequested();
     }
@@ -73,17 +71,3 @@ InstrumentItem* DataPropertyWidget::instrumentItem()
         ASSERT(false);
     return nullptr;
 }
-
-QStringList DataPropertyWidget::axesUnitsList()
-{
-    QStringList list;
-    if (!instrumentItem()) {
-        ASSERT(realItem());
-        list << realItem()->dataItem()->currentAxesUnits();
-    } else {
-        const auto converter = instrumentItem()->createCoordSystem();
-        ASSERT(converter);
-        list = GUI::Model::DataItemUtil::availableUnits(*converter);
-    }
-    return list;
-}
diff --git a/GUI/View/Common/DataPropertyWidget.h b/GUI/View/Common/DataPropertyWidget.h
index 9984ac9ecc3..c9125ddad66 100644
--- a/GUI/View/Common/DataPropertyWidget.h
+++ b/GUI/View/Common/DataPropertyWidget.h
@@ -37,7 +37,6 @@ protected:
     virtual void createPanelElements() = 0;
 
     InstrumentItem* instrumentItem();
-    QStringList axesUnitsList();
 
     QFormLayout* m_mainLayout;
     QList<std::function<void()>> m_updaters;
diff --git a/GUI/View/Common/IntensityDataPropertyWidget.cpp b/GUI/View/Common/IntensityDataPropertyWidget.cpp
index bb9f8f9b2e4..f1ff5994ba3 100644
--- a/GUI/View/Common/IntensityDataPropertyWidget.cpp
+++ b/GUI/View/Common/IntensityDataPropertyWidget.cpp
@@ -50,6 +50,7 @@ void IntensityDataPropertyWidget::createPanelElements()
     GUI::Util::Layout::clearLayout(m_mainLayout);
     m_updaters.clear();
 
+    /*
     m_mainLayout->addRow("Axes units:",
                          GUI::Util::createUnitsComboBox(
                              axesUnitsList(),
@@ -61,6 +62,7 @@ void IntensityDataPropertyWidget::createPanelElements()
                                  gProjectDocument.value()->setModified();
                              },
                              &m_updaters));
+    */
 
     m_mainLayout->addRow(
         "Color scheme:",
@@ -210,7 +212,9 @@ void IntensityDataPropertyWidget::createPanelElements()
             &IntensityDataPropertyWidget::updateUIValues, Qt::UniqueConnection);
 
     // update coordinates on axes units change
+    /*
     for (auto item : allIntensityDataItems())
         connect(item, &DataItem::axesUnitsChanged, this,
                 &IntensityDataPropertyWidget::updateItemCoords, Qt::UniqueConnection);
+    */
 }
diff --git a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp
index 79f2090d5f4..d752927085d 100644
--- a/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp
+++ b/GUI/View/PlotSpecular/SpecularDataPropertyWidget.cpp
@@ -42,6 +42,7 @@ void SpecularDataPropertyWidget::createPanelElements()
     GUI::Util::Layout::clearLayout(m_mainLayout);
     m_updaters.clear();
 
+    /*
     m_mainLayout->addRow("Axes units:",
                          GUI::Util::createUnitsComboBox(
                              axesUnitsList(),
@@ -53,6 +54,7 @@ void SpecularDataPropertyWidget::createPanelElements()
                                  gProjectDocument.value()->setModified();
                              },
                              &m_updaters));
+    */
 
     // -- x-axis
     auto* xGroup = new QGroupBox("X axis", this);
-- 
GitLab