From 60c1eb722f2d039cff546498c82b538a7ada4a86 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Wed, 7 Dec 2022 13:36:08 +0100
Subject: [PATCH] SpecularBeamItem: footprint returns const SelectyionProperty&

---
 GUI/Model/Device/BeamItems.cpp                    | 10 ----------
 GUI/Model/Device/BeamItems.h                      |  4 ++--
 GUI/Model/ToCore/SimulationToCore.cpp             |  2 +-
 GUI/View/Instrument/FootprintCorrectionEditor.cpp |  4 ++--
 4 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/GUI/Model/Device/BeamItems.cpp b/GUI/Model/Device/BeamItems.cpp
index 2db26bb765d..3d2593853cf 100644
--- a/GUI/Model/Device/BeamItems.cpp
+++ b/GUI/Model/Device/BeamItems.cpp
@@ -168,16 +168,6 @@ BasicAxisItem* SpecularBeamItem::inclinationAxis() const
     return inclinationAngleItem()->alphaAxis();
 }
 
-FootprintItem* SpecularBeamItem::footprint() const
-{
-    return m_footprint.currentItem();
-}
-
-SelectionDescriptor<FootprintItem*> SpecularBeamItem::footprintSelection() const
-{
-    return m_footprint;
-}
-
 void SpecularBeamItem::setGaussianFootprint(double value)
 {
     m_footprint.setCurrentItem(new FootprintGaussianItem(value));
diff --git a/GUI/Model/Device/BeamItems.h b/GUI/Model/Device/BeamItems.h
index 6de0b398146..105567e44c4 100644
--- a/GUI/Model/Device/BeamItems.h
+++ b/GUI/Model/Device/BeamItems.h
@@ -79,8 +79,8 @@ public:
     SpecularBeamInclinationItem* inclinationAngleItem() const override;
     BasicAxisItem* inclinationAxis() const;
 
-    FootprintItem* footprint() const;
-    SelectionDescriptor<FootprintItem*> footprintSelection() const;
+    const SelectionProperty<FootprintItemCatalog>& footprint() const { return m_footprint; }
+
     void setGaussianFootprint(double value);
     void setSquareFootprint(double value);
     template <typename T>
diff --git a/GUI/Model/ToCore/SimulationToCore.cpp b/GUI/Model/ToCore/SimulationToCore.cpp
index 60ab6a7effb..c6c5c8acdd5 100644
--- a/GUI/Model/ToCore/SimulationToCore.cpp
+++ b/GUI/Model/ToCore/SimulationToCore.cpp
@@ -130,7 +130,7 @@ SpecularSimulation* createSpecularSimulation(std::unique_ptr<MultiLayer> sample,
 {
     auto* beam_item = item->beamItem();
     auto* const axis_item = beam_item->inclinationAxis();
-    auto* const footprint_item = beam_item->footprint();
+    auto* const footprint_item = beam_item->footprint().currentItem();
 
     AlphaScan scan(beam_item->wavelength(), *axis_item->createAxis(Units::deg));
     scan.setFootprintFactor(footprint_item->createFootprint().get());
diff --git a/GUI/View/Instrument/FootprintCorrectionEditor.cpp b/GUI/View/Instrument/FootprintCorrectionEditor.cpp
index 349034b0529..1ba20f0c0c1 100644
--- a/GUI/View/Instrument/FootprintCorrectionEditor.cpp
+++ b/GUI/View/Instrument/FootprintCorrectionEditor.cpp
@@ -28,7 +28,7 @@ FootprintCorrectionEditor::FootprintCorrectionEditor(QWidget* parent, SpecularBe
     setProperty("subgroup", true); // for stylesheet addressing
     m_formLayout = new QFormLayout(this);
     m_formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint);
-    auto* typeCombo = GUI::Util::createComboBoxFromDescriptor(item->footprintSelection(), [=](int) {
+    auto* typeCombo = GUI::Util::createComboBoxFromDescriptor(item->footprint().m_descriptor, [=](int) {
         createFootprintWidgets();
         emit dataChanged();
     });
@@ -44,7 +44,7 @@ void FootprintCorrectionEditor::createFootprintWidgets()
     while (m_formLayout->rowCount() > 1)
         m_formLayout->removeRow(1);
 
-    auto* footprintItem = m_item->footprintSelection().currentItem();
+    auto* footprintItem = m_item->footprint().currentItem();
     if (auto* square = dynamic_cast<FootprintSquareItem*>(footprintItem)) {
         auto* spinbox = new DoubleSpinBox(square->squareFootprintValue());
         spinbox->setSingleStep(0.01);
-- 
GitLab