From 09104d5bb024bfc63f6b8204fd7e8cec021b3b56 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Wed, 7 Dec 2022 12:14:16 +0100
Subject: [PATCH] SelectionProperty: rm get() method, currentItem() is used
 instead

---
 GUI/Model/Descriptor/SelectionProperty.h  | 19 ++++++++-----------
 GUI/Model/Device/BeamDistributionItem.cpp |  2 +-
 GUI/Model/Device/BeamDistributionItem.h   |  2 +-
 GUI/Model/Device/BeamItems.cpp            |  2 +-
 GUI/Model/Device/DetectorItems.cpp        |  2 +-
 GUI/Model/Device/DetectorItems.h          |  2 +-
 GUI/Model/Device/InstrumentItems.cpp      |  4 ++--
 GUI/Model/Device/InstrumentItems.h        |  4 ++--
 GUI/Model/Sample/ItemWithParticles.cpp    |  2 +-
 GUI/Model/Sample/MesocrystalItem.cpp      | 10 +++++-----
 GUI/Model/Sample/ParticleItem.cpp         |  2 +-
 GUI/Model/Sample/ParticleLayoutItem.cpp   | 10 +++++-----
 12 files changed, 29 insertions(+), 32 deletions(-)

diff --git a/GUI/Model/Descriptor/SelectionProperty.h b/GUI/Model/Descriptor/SelectionProperty.h
index 5aefb8d1878..bea0031f40e 100644
--- a/GUI/Model/Descriptor/SelectionProperty.h
+++ b/GUI/Model/Descriptor/SelectionProperty.h
@@ -137,9 +137,6 @@ public:
     //! Direct access to the stored pointer
     CatalogedType* operator->() const { return m_p.get(); }
 
-    //! Direct access to the stored pointer
-    CatalogedType* get() const { return m_p.get(); }
-
     //! Directly set the new item.
     void set(CatalogedType* t, bool callInitializer = false)
     {
@@ -171,6 +168,14 @@ public:
         }
     }
 
+    QString label() const {return m_label;}
+    QString tooltip() const {return m_tooltip;}
+    QStringList options() const {return m_options;}
+    CatalogedType* currentItem() const {return m_p.get();}
+
+    void setCurrentIndex(int newIndex) override { currentIndexSetter(newIndex); }
+    int currentIndex() const override { return m_types.indexOf(Catalog::type(m_p.get())); }
+
 private:
     template <typename... ArgsForCreation>
     void initFieldsAndSetter(const QString& label, const QString& tooltip, ArgsForCreation... argsForCreation) {
@@ -211,14 +216,6 @@ private:
         m_descriptor.currentItem = [=] { return m_p.get(); };
     }
 
-    QString label() {return m_label;}
-    QString tooltip() {return m_tooltip;}
-    QStringList options() {return m_options;}
-    CatalogedType* currentItem() {return m_p.get();}
-
-    void setCurrentIndex(int newIndex) override { currentIndexSetter(newIndex); }
-    int currentIndex() const override { return m_types.indexOf(Catalog::type(m_p.get())); }
-
 private:
     SelectionDescriptor<CatalogedType*>
         m_descriptor; //!< descriptor, holding attributes like label, tooltip
diff --git a/GUI/Model/Device/BeamDistributionItem.cpp b/GUI/Model/Device/BeamDistributionItem.cpp
index 61bc6342e68..5b12f22e2a4 100644
--- a/GUI/Model/Device/BeamDistributionItem.cpp
+++ b/GUI/Model/Device/BeamDistributionItem.cpp
@@ -56,7 +56,7 @@ double BeamDistributionItem::scaleFactor() const
 
 DistributionItem* BeamDistributionItem::distribution() const
 {
-    return m_distribution.get();
+    return m_distribution.currentItem();
 }
 
 SelectionDescriptor<DistributionItem*> BeamDistributionItem::distributionSelection() const
diff --git a/GUI/Model/Device/BeamDistributionItem.h b/GUI/Model/Device/BeamDistributionItem.h
index ccba2f00139..d190a7b6e6e 100644
--- a/GUI/Model/Device/BeamDistributionItem.h
+++ b/GUI/Model/Device/BeamDistributionItem.h
@@ -53,7 +53,7 @@ template <typename T>
 T* BeamDistributionItem::setDistributionType()
 {
     m_distribution.set<T>();
-    return dynamic_cast<T*>(m_distribution.get());
+    return dynamic_cast<T*>(m_distribution.currentItem());
 }
 
 #endif // BORNAGAIN_GUI_MODEL_DEVICE_BEAMDISTRIBUTIONITEM_H
diff --git a/GUI/Model/Device/BeamItems.cpp b/GUI/Model/Device/BeamItems.cpp
index 5071c4df50f..a61ea8da9a7 100644
--- a/GUI/Model/Device/BeamItems.cpp
+++ b/GUI/Model/Device/BeamItems.cpp
@@ -170,7 +170,7 @@ BasicAxisItem* SpecularBeamItem::inclinationAxis() const
 
 FootprintItem* SpecularBeamItem::footprint() const
 {
-    return m_footprint.get();
+    return m_footprint.currentItem();
 }
 
 SelectionDescriptor<FootprintItem*> SpecularBeamItem::footprintSelection() const
diff --git a/GUI/Model/Device/DetectorItems.cpp b/GUI/Model/Device/DetectorItems.cpp
index da7f88f39ed..44117ae215b 100644
--- a/GUI/Model/Device/DetectorItems.cpp
+++ b/GUI/Model/Device/DetectorItems.cpp
@@ -45,7 +45,7 @@ MaskItems& DetectorItem::maskItems()
 
 ResolutionFunctionItem* DetectorItem::resolutionFunction() const
 {
-    return m_resolutionFunction.get();
+    return m_resolutionFunction.currentItem();
 }
 
 SelectionDescriptor<ResolutionFunctionItem*> DetectorItem::resolutionFunctionSelection() const
diff --git a/GUI/Model/Device/DetectorItems.h b/GUI/Model/Device/DetectorItems.h
index 7bcef715385..478322eddac 100644
--- a/GUI/Model/Device/DetectorItems.h
+++ b/GUI/Model/Device/DetectorItems.h
@@ -74,7 +74,7 @@ template <typename T>
 T* DetectorItem::setResolutionFunctionType()
 {
     m_resolutionFunction.set<T>();
-    return dynamic_cast<T*>(m_resolutionFunction.get());
+    return dynamic_cast<T*>(m_resolutionFunction.currentItem());
 }
 
 #endif // BORNAGAIN_GUI_MODEL_DEVICE_DETECTORITEMS_H
diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp
index a8f4dd773f4..7958aef0f20 100644
--- a/GUI/Model/Device/InstrumentItems.cpp
+++ b/GUI/Model/Device/InstrumentItems.cpp
@@ -133,7 +133,7 @@ BeamItem* InstrumentItem::beamItem() const
 
 BackgroundItem* InstrumentItem::backgroundItem() const
 {
-    return m_backgroundItem.get();
+    return m_backgroundItem.currentItem();
 }
 
 SelectionDescriptor<BackgroundItem*> InstrumentItem::backgroundSelection() const
@@ -364,7 +364,7 @@ void Instrument2DItem::serialize(Streamer& s)
 
 DetectorItem* Instrument2DItem::detectorItem() const
 {
-    return m_detectorItem.get();
+    return m_detectorItem.currentItem();
 }
 
 SelectionDescriptor<DetectorItem*> Instrument2DItem::detectorSelection() const
diff --git a/GUI/Model/Device/InstrumentItems.h b/GUI/Model/Device/InstrumentItems.h
index 9a5b13ebb8a..4110ca6e387 100644
--- a/GUI/Model/Device/InstrumentItems.h
+++ b/GUI/Model/Device/InstrumentItems.h
@@ -233,14 +233,14 @@ template <typename T>
 T* InstrumentItem::setBackgroundType()
 {
     m_backgroundItem.set<T>();
-    return dynamic_cast<T*>(m_backgroundItem.get());
+    return dynamic_cast<T*>(m_backgroundItem.currentItem());
 }
 
 template <typename T>
 T* Instrument2DItem::setDetectorType()
 {
     m_detectorItem.set<T>();
-    return dynamic_cast<T*>(m_detectorItem.get());
+    return dynamic_cast<T*>(m_detectorItem.currentItem());
 }
 
 #endif // BORNAGAIN_GUI_MODEL_DEVICE_INSTRUMENTITEMS_H
diff --git a/GUI/Model/Sample/ItemWithParticles.cpp b/GUI/Model/Sample/ItemWithParticles.cpp
index c6b5478f0d9..ef81e55f85f 100644
--- a/GUI/Model/Sample/ItemWithParticles.cpp
+++ b/GUI/Model/Sample/ItemWithParticles.cpp
@@ -30,7 +30,7 @@ ItemWithParticles::ItemWithParticles(const QString& abundanceTooltip,
 
 std::unique_ptr<IRotation> ItemWithParticles::createRotation() const
 {
-    if (!m_rotation.get())
+    if (!m_rotation.currentItem())
         return {};
     const auto matrix = m_rotation->rotation();
     return std::unique_ptr<IRotation>(IRotation::createRotation(matrix));
diff --git a/GUI/Model/Sample/MesocrystalItem.cpp b/GUI/Model/Sample/MesocrystalItem.cpp
index ebac4d5e0b3..38c942c42e0 100644
--- a/GUI/Model/Sample/MesocrystalItem.cpp
+++ b/GUI/Model/Sample/MesocrystalItem.cpp
@@ -109,16 +109,16 @@ Lattice3D MesocrystalItem::getLattice() const
 
 std::unique_ptr<IParticle> MesocrystalItem::getBasis() const
 {
-    if (auto* p = dynamic_cast<ParticleItem*>(m_basisParticle.get()))
+    if (auto* p = dynamic_cast<ParticleItem*>(m_basisParticle.currentItem()))
         return p->createParticle();
 
-    if (auto* p = dynamic_cast<CoreAndShellItem*>(m_basisParticle.get()))
+    if (auto* p = dynamic_cast<CoreAndShellItem*>(m_basisParticle.currentItem()))
         return p->createCoreAndShell();
 
-    if (auto* p = dynamic_cast<CompoundItem*>(m_basisParticle.get()))
+    if (auto* p = dynamic_cast<CompoundItem*>(m_basisParticle.currentItem()))
         return p->createCompound();
 
-    if (auto* p = dynamic_cast<MesocrystalItem*>(m_basisParticle.get()))
+    if (auto* p = dynamic_cast<MesocrystalItem*>(m_basisParticle.currentItem()))
         return p->createMesocrystal();
 
     return {};
@@ -131,7 +131,7 @@ std::unique_ptr<IFormFactor> MesocrystalItem::getOuterShape() const
 
 ItemWithParticles* MesocrystalItem::basisParticle() const
 {
-    return m_basisParticle.get();
+    return m_basisParticle.currentItem();
 }
 
 void MesocrystalItem::setBasis(ItemWithParticles* basis)
diff --git a/GUI/Model/Sample/ParticleItem.cpp b/GUI/Model/Sample/ParticleItem.cpp
index f515e3fceb7..a02c9ec9219 100644
--- a/GUI/Model/Sample/ParticleItem.cpp
+++ b/GUI/Model/Sample/ParticleItem.cpp
@@ -79,7 +79,7 @@ void ParticleItem::setFormFactor(FormFactorItem* p)
 
 FormFactorItem* ParticleItem::formfactor() const
 {
-    return m_formFactor.get();
+    return m_formFactor.currentItem();
 }
 
 QVector<ItemWithParticles*> ParticleItem::containedItemsWithParticles() const
diff --git a/GUI/Model/Sample/ParticleLayoutItem.cpp b/GUI/Model/Sample/ParticleLayoutItem.cpp
index cdb3124223d..54f6cccdd7d 100644
--- a/GUI/Model/Sample/ParticleLayoutItem.cpp
+++ b/GUI/Model/Sample/ParticleLayoutItem.cpp
@@ -48,10 +48,10 @@ double ParticleLayoutItem::totalDensityValue() const
     if (!totalDensityIsDefinedByInterference())
         return m_ownDensity.value();
 
-    ASSERT(m_interference.get());
+    ASSERT(m_interference.currentItem());
 
     if (const auto* interLatticeItem =
-            dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.get())) {
+            dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.currentItem())) {
         Lattice2DItem* latticeItem = interLatticeItem->latticeType().currentItem();
         try {
             const double area = latticeItem->unitCellArea();
@@ -62,7 +62,7 @@ double ParticleLayoutItem::totalDensityValue() const
         }
     }
 
-    if (const auto* hd = dynamic_cast<const InterferenceHardDiskItem*>(m_interference.get()))
+    if (const auto* hd = dynamic_cast<const InterferenceHardDiskItem*>(m_interference.currentItem()))
         return hd->density();
 
     ASSERT(false);
@@ -109,8 +109,8 @@ void ParticleLayoutItem::removeInterference()
 
 bool ParticleLayoutItem::totalDensityIsDefinedByInterference() const
 {
-    return dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.get())
-           || dynamic_cast<const InterferenceHardDiskItem*>(m_interference.get());
+    return dynamic_cast<const Interference2DAbstractLatticeItem*>(m_interference.currentItem())
+           || dynamic_cast<const InterferenceHardDiskItem*>(m_interference.currentItem());
 }
 
 void ParticleLayoutItem::serialize(Streamer& s)
-- 
GitLab