From a364261c79f8214aa61787192c0e2e95cced5eef Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Wed, 23 Nov 2022 10:04:42 +0100
Subject: [PATCH] AxisProperty: rm uint property

---
 GUI/Model/Descriptor/AxisProperty.cpp      | 17 +++++------------
 GUI/Model/Descriptor/AxisProperty.h        | 10 +++-------
 GUI/Model/Device/InstrumentItems.cpp       |  2 --
 GUI/Model/Device/SphericalDetectorItem.cpp |  2 --
 GUI/Support/XML/Serialize.cpp              | 15 +++++++++++++++
 GUI/Support/XML/Serialize.h                |  1 +
 GUI/View/Instrument/AxisPropertyEditor.cpp |  4 ++--
 7 files changed, 26 insertions(+), 25 deletions(-)

diff --git a/GUI/Model/Descriptor/AxisProperty.cpp b/GUI/Model/Descriptor/AxisProperty.cpp
index 594d48733b9..d9b40293233 100644
--- a/GUI/Model/Descriptor/AxisProperty.cpp
+++ b/GUI/Model/Descriptor/AxisProperty.cpp
@@ -18,13 +18,6 @@
 
 using std::variant;
 
-void AxisProperty::initNbins(const QString& label, const QString& tooltip, uint n,
-                             const variant<QString, Unit>& unit)
-{
-    m_nbins.init(label, tooltip, n, unit, "nbins");
-}
-
-
 void AxisProperty::initMin(const QString& label, const QString& tooltip, double value,
                            const variant<QString, Unit>& unit, const RealLimits& limits,
                            uint decimals)
@@ -49,18 +42,18 @@ void AxisProperty::rwAxisProperty(Streamer& s, const QString& tag)
 {
     s.start(tag);
     s.assertVersion(0);
-    Serialize::rwProperty(s, m_nbins);
+    Serialize::rwValue(s, "nbins", m_nbins);
     Serialize::rwProperty(s, m_min);
     Serialize::rwProperty(s, m_max);
     s.finish(tag);
 }
 
-uint AxisProperty::NEW_nbins() const
+uint AxisProperty::nbins() const
 {
-    return m_nbins_NEW;
+    return m_nbins;
 }
 
-void AxisProperty::NEW_setNbins(uint value)
+void AxisProperty::setNbins(uint value)
 {
-    m_nbins_NEW = value;
+    m_nbins = value;
 }
diff --git a/GUI/Model/Descriptor/AxisProperty.h b/GUI/Model/Descriptor/AxisProperty.h
index 8318c963d9c..7da1919ccbf 100644
--- a/GUI/Model/Descriptor/AxisProperty.h
+++ b/GUI/Model/Descriptor/AxisProperty.h
@@ -37,13 +37,9 @@ class Streamer;
 
 class AxisProperty {
 public:
-    UINT_PROPERTY(nbins, Nbins);
     DOUBLE_PROPERTY(min, Min);
     DOUBLE_PROPERTY(max, Max);
 
-    void initNbins(const QString& label, const QString& tooltip, uint n = 100,
-                   const std::variant<QString, Unit>& unit = "nbins");
-
     void initMin(const QString& label, const QString& tooltip, double value,
                  const std::variant<QString, Unit>& unit,
                  const RealLimits& limits = RealLimits::nonnegative(), uint decimals = 3);
@@ -58,11 +54,11 @@ public:
 
     void rwAxisProperty(Streamer& s, const QString& tag);
 
-    uint NEW_nbins() const;
-    void NEW_setNbins(uint value);
+    uint nbins() const;
+    void setNbins(uint value);
 
 private:
-    uint m_nbins_NEW = 100;
+    uint m_nbins = 100;
 };
 
 // clang-format off
diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp
index 3e5e077a943..6ac7170ea7e 100644
--- a/GUI/Model/Device/InstrumentItems.cpp
+++ b/GUI/Model/Device/InstrumentItems.cpp
@@ -264,7 +264,6 @@ DepthProbeInstrumentItem::DepthProbeInstrumentItem()
     axisItem->setMax(1.0);
     axisItem->setBinCount(500);
 
-    m_zAxis.initNbins("Nbins", "Number of points in scan across sample bulk");
     m_zAxis.initMin("Min", "Starting value below sample horizon", -100.0, Unit::nanometer,
                     RealLimits::limitless());
     m_zAxis.initMax("Max", "Ending value above sample horizon", 100.0, Unit::nanometer,
@@ -440,7 +439,6 @@ const ICoordSystem* GISASInstrumentItem::createCoordSystem() const
 
 OffspecInstrumentItem::OffspecInstrumentItem()
 {
-    m_alphaAxis.initNbins("Nbins", "Number of points in scan");
     m_alphaAxis.initMin("Min", "Starting value", 0.0, Unit::degree, RealLimits::limited(-90, 90));
     m_alphaAxis.initMax("Max", "Ending value", 10.0, Unit::degree, RealLimits::limited(-90, 90));
 
diff --git a/GUI/Model/Device/SphericalDetectorItem.cpp b/GUI/Model/Device/SphericalDetectorItem.cpp
index 023362f9dd6..fecd05526f3 100644
--- a/GUI/Model/Device/SphericalDetectorItem.cpp
+++ b/GUI/Model/Device/SphericalDetectorItem.cpp
@@ -32,13 +32,11 @@ SphericalDetectorItem::SphericalDetectorItem()
         "Resolution function", "Detector resolution function", "resolutionFunction",
         initResolutionFunction);
 
-    m_phiAxis.initNbins("Nbins", "Number of phi-axis bins");
     m_phiAxis.initMin("Min", "Lower edge of first phi-bin", -1.0, Unit::degree,
                       RealLimits::limited(-90, 90));
     m_phiAxis.initMax("Max", "Upper edge of last phi-bin", 1.0, Unit::degree,
                       RealLimits::limited(-90, 90));
 
-    m_alphaAxis.initNbins("Nbins", "Number of alpha-axis bins");
     m_alphaAxis.initMin("Min", "Lower edge of first alpha-bin", 0.0, Unit::degree,
                         RealLimits::limited(-90, 90));
     m_alphaAxis.initMax("Max", "Upper edge of last alpha-bin", 2.0, Unit::degree,
diff --git a/GUI/Support/XML/Serialize.cpp b/GUI/Support/XML/Serialize.cpp
index 1ae690c48b7..5becffb421b 100644
--- a/GUI/Support/XML/Serialize.cpp
+++ b/GUI/Support/XML/Serialize.cpp
@@ -46,6 +46,21 @@ void Serialize::rwValue(Streamer& s, const QString& tag, int& val)
         ASSERT(0);
 }
 
+void Serialize::rwValue(Streamer& s, const QString& tag, uint& val)
+{
+    if (QXmlStreamWriter* w = s.xmlWriter()) {
+        w->writeStartElement(tag);
+        w->writeAttribute(XML::Tags::Value, QString::number(val));
+        w->writeEndElement();
+    } else if (QXmlStreamReader* r = s.xmlReader()) {
+        r->readNextStartElement();
+        s.assertCurrentTag(tag);
+        val = r->attributes().value(XML::Tags::Value).toInt();
+        s.gotoEndElementOfTag(tag);
+    } else
+        ASSERT(0);
+}
+
 void Serialize::rwValue(Streamer& s, const QString& tag, double& val)
 {
     if (QXmlStreamWriter* w = s.xmlWriter()) {
diff --git a/GUI/Support/XML/Serialize.h b/GUI/Support/XML/Serialize.h
index 3108657b292..969fa772611 100644
--- a/GUI/Support/XML/Serialize.h
+++ b/GUI/Support/XML/Serialize.h
@@ -29,6 +29,7 @@ namespace Serialize {
 
 void rwValue(Streamer& s, const QString& tag, bool& val);
 void rwValue(Streamer& s, const QString& tag, int& val);
+void rwValue(Streamer& s, const QString& tag, uint& val);
 void rwValue(Streamer& s, const QString& tag, double& val);
 void rwValue(Streamer& s, const QString& tag, QString& val);
 void rwValue(Streamer& s, const QString& tag, QColor& col);
diff --git a/GUI/View/Instrument/AxisPropertyEditor.cpp b/GUI/View/Instrument/AxisPropertyEditor.cpp
index 6daf4d7f8c6..48a4516c3cc 100644
--- a/GUI/View/Instrument/AxisPropertyEditor.cpp
+++ b/GUI/View/Instrument/AxisPropertyEditor.cpp
@@ -31,8 +31,8 @@ AxisPropertyEditor::AxisPropertyEditor(QWidget* parent, const QString& groupTitl
     auto* formLayout = new QFormLayout(this);
     formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
 
-    m_nbinsSpinBox = GUI::Util::createIntSpinbox([=] { return axisProperty->NEW_nbins(); },
-                                [=](int v) { axisProperty->NEW_setNbins(v); },
+    m_nbinsSpinBox = GUI::Util::createIntSpinbox([=] { return axisProperty->nbins(); },
+                                [=](int v) { axisProperty->setNbins(v); },
                                 RealLimits::nonnegative(), nbinsTooltip);
     formLayout->addRow(GUI::Util::labelWithUnit("Nbins", "nbins") + ":", m_nbinsSpinBox);
 
-- 
GitLab