From 3d6d27e3b6d78f547c5ca86010f5fce5d5d20291 Mon Sep 17 00:00:00 2001
From: Tobias Knopff <t.knopff@fz-juelich.de>
Date: Mon, 7 Jun 2021 11:28:46 +0200
Subject: [PATCH] Use string constants for resolution function item type names

---
 GUI/Models/DetectorItems.cpp              | 2 +-
 GUI/Models/GroupInfoCatalog.cpp           | 7 ++++---
 GUI/Models/ItemCatalog.cpp                | 4 ++--
 GUI/Models/ResolutionFunctionItems.cpp    | 8 ++++++--
 GUI/Models/ResolutionFunctionItems.h      | 5 +++++
 GUI/Models/TransformFromDomain.cpp        | 2 +-
 Tests/UnitTests/GUI/TestDetectorItems.cpp | 3 ++-
 7 files changed, 21 insertions(+), 10 deletions(-)

diff --git a/GUI/Models/DetectorItems.cpp b/GUI/Models/DetectorItems.cpp
index cfac4d17331..3df3d87862d 100644
--- a/GUI/Models/DetectorItems.cpp
+++ b/GUI/Models/DetectorItems.cpp
@@ -145,7 +145,7 @@ void DetectorItem::update_resolution_function_tooltips()
 {
     auto& resfuncItem = groupItem<ResolutionFunctionItem>(DetectorItem::P_RESOLUTION_FUNCTION);
 
-    if (resfuncItem.modelType() == "ResolutionFunction2DGaussian") {
+    if (resfuncItem.modelType() == ResolutionFunction2DGaussianItem::M_TYPE) {
         QString units = modelType() == SphericalDetectorItem::M_TYPE ? "deg" : "mm";
 
         resfuncItem.getItem(ResolutionFunction2DGaussianItem::P_SIGMA_X)
diff --git a/GUI/Models/GroupInfoCatalog.cpp b/GUI/Models/GroupInfoCatalog.cpp
index 45e6ad9fe2c..bc388ad4c86 100644
--- a/GUI/Models/GroupInfoCatalog.cpp
+++ b/GUI/Models/GroupInfoCatalog.cpp
@@ -22,6 +22,7 @@
 #include "GUI/Models/PointwiseAxisItem.h"
 #include "GUI/Models/RealLimitsItems.h"
 #include "GUI/Models/RectangularDetectorItem.h"
+#include "GUI/Models/ResolutionFunctionItems.h"
 #include "GUI/Models/SphericalDetectorItem.h"
 
 GroupInfoCatalog::GroupInfoCatalog()
@@ -149,9 +150,9 @@ GroupInfoCatalog::GroupInfoCatalog()
     addInfo(info);
 
     info = GroupInfo("Resolution function group");
-    info.add("ResolutionFunctionNone", "None");
-    info.add("ResolutionFunction2DGaussian", "2D Gaussian");
-    info.setDefaultType("ResolutionFunctionNone");
+    info.add(ResolutionFunctionNoneItem::M_TYPE, "None");
+    info.add(ResolutionFunction2DGaussianItem::M_TYPE, "2D Gaussian");
+    info.setDefaultType(ResolutionFunctionNoneItem::M_TYPE);
     addInfo(info);
 
     info = GroupInfo("Minimizer library group");
diff --git a/GUI/Models/ItemCatalog.cpp b/GUI/Models/ItemCatalog.cpp
index 74b43559c4b..fa64e9c8d4c 100644
--- a/GUI/Models/ItemCatalog.cpp
+++ b/GUI/Models/ItemCatalog.cpp
@@ -192,8 +192,8 @@ ItemCatalog::ItemCatalog()
     addItem<SpecularBeamInclinationItem>();
     addItem<SpecularBeamWavelengthItem>();
 
-    add("ResolutionFunctionNone", create_new<ResolutionFunctionNoneItem>);
-    add("ResolutionFunction2DGaussian", create_new<ResolutionFunction2DGaussianItem>);
+    addItem<ResolutionFunctionNoneItem>();
+    addItem<ResolutionFunction2DGaussianItem>();
 
     add("MaskContainer", create_new<MaskContainerItem>);
     add("RectangleMask", create_new<RectangleItem>);
diff --git a/GUI/Models/ResolutionFunctionItems.cpp b/GUI/Models/ResolutionFunctionItems.cpp
index bf47edc53a3..a2c226d3d34 100644
--- a/GUI/Models/ResolutionFunctionItems.cpp
+++ b/GUI/Models/ResolutionFunctionItems.cpp
@@ -19,8 +19,10 @@ ResolutionFunctionItem::ResolutionFunctionItem(const QString& name) : SessionIte
 
 /* --------------------------------------------------------------------------------------------- */
 
+const QString ResolutionFunctionNoneItem::M_TYPE = "ResolutionFunctionNone";
+
 ResolutionFunctionNoneItem::ResolutionFunctionNoneItem()
-    : ResolutionFunctionItem("ResolutionFunctionNone")
+    : ResolutionFunctionItem(M_TYPE)
 {
 }
 
@@ -35,8 +37,10 @@ ResolutionFunctionNoneItem::createResolutionFunction(double) const
 const QString ResolutionFunction2DGaussianItem::P_SIGMA_X = QString::fromStdString("SigmaX");
 const QString ResolutionFunction2DGaussianItem::P_SIGMA_Y = QString::fromStdString("SigmaY");
 
+const QString ResolutionFunction2DGaussianItem::M_TYPE = "ResolutionFunction2DGaussian";
+
 ResolutionFunction2DGaussianItem::ResolutionFunction2DGaussianItem()
-    : ResolutionFunctionItem("ResolutionFunction2DGaussian")
+    : ResolutionFunctionItem(M_TYPE)
 {
     addProperty(P_SIGMA_X, 0.02)
         ->setLimits(RealLimits::lowerLimited(0.0))
diff --git a/GUI/Models/ResolutionFunctionItems.h b/GUI/Models/ResolutionFunctionItems.h
index 9c2d60564bd..7aa76eb29c6 100644
--- a/GUI/Models/ResolutionFunctionItems.h
+++ b/GUI/Models/ResolutionFunctionItems.h
@@ -33,6 +33,8 @@ public:
 class BA_CORE_API_ ResolutionFunctionNoneItem : public ResolutionFunctionItem {
 
 public:
+    static const QString M_TYPE;
+
     ResolutionFunctionNoneItem();
     std::unique_ptr<IResolutionFunction2D> createResolutionFunction(double scale = 1.0) const;
 };
@@ -42,6 +44,9 @@ class BA_CORE_API_ ResolutionFunction2DGaussianItem : public ResolutionFunctionI
 public:
     static const QString P_SIGMA_X;
     static const QString P_SIGMA_Y;
+
+    static const QString M_TYPE;
+
     ResolutionFunction2DGaussianItem();
     std::unique_ptr<IResolutionFunction2D> createResolutionFunction(double scale = 1.0) const;
 };
diff --git a/GUI/Models/TransformFromDomain.cpp b/GUI/Models/TransformFromDomain.cpp
index e8373ed47ae..1e1b25c35d5 100644
--- a/GUI/Models/TransformFromDomain.cpp
+++ b/GUI/Models/TransformFromDomain.cpp
@@ -321,7 +321,7 @@ void TransformFromDomain::setDetectorResolution(DetectorItem* detector_item,
         if (auto resfunc = dynamic_cast<const ResolutionFunction2DGaussian*>(
                 p_convfunc->getResolutionFunction2D())) {
             SessionItem* item = detector_item->setResolutionFunctionType
-                ("ResolutionFunction2DGaussian");
+                (ResolutionFunction2DGaussianItem::M_TYPE);
             double scale(1.0);
             if (detector_item->modelType() == SphericalDetectorItem::M_TYPE)
                 scale = 1. / Units::deg;
diff --git a/Tests/UnitTests/GUI/TestDetectorItems.cpp b/Tests/UnitTests/GUI/TestDetectorItems.cpp
index 587a763033f..f0ade3f9a87 100644
--- a/Tests/UnitTests/GUI/TestDetectorItems.cpp
+++ b/Tests/UnitTests/GUI/TestDetectorItems.cpp
@@ -6,6 +6,7 @@
 #include "GUI/Models/InstrumentItems.h"
 #include "GUI/Models/InstrumentModel.h"
 #include "GUI/Models/RectangularDetectorItem.h"
+#include "GUI/Models/ResolutionFunctionItems.h"
 #include "Tests/GTestWrapper/google_test.h"
 
 class TestDetectorItems : public ::testing::Test {
@@ -35,7 +36,7 @@ TEST_F(TestDetectorItems, test_resolutionFunction)
 
     DetectorItem* detectorItem = instrument->detectorItem();
 
-    detectorItem->setResolutionFunctionType("ResolutionFunction2DGaussian");
+    detectorItem->setResolutionFunctionType(ResolutionFunction2DGaussianItem::M_TYPE);
 
     auto detector = detectorItem->createDetector();
     auto convol =
-- 
GitLab