From bec7e76c8eec2e4e6fc6360597b2fb5d68099ace Mon Sep 17 00:00:00 2001
From: Matthias Puchner <github@mpuchner.de>
Date: Mon, 11 Oct 2021 13:55:17 +0200
Subject: [PATCH] use SelectionDescriptor in InterferenceItems

---
 GUI/Models/InterferenceItems.cpp | 13 +++++++++++++
 GUI/Models/InterferenceItems.h   |  4 +++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/GUI/Models/InterferenceItems.cpp b/GUI/Models/InterferenceItems.cpp
index 5ece284558d..4f4894b0509 100644
--- a/GUI/Models/InterferenceItems.cpp
+++ b/GUI/Models/InterferenceItems.cpp
@@ -14,12 +14,14 @@
 
 #include "GUI/Models/InterferenceItems.h"
 #include "Base/Const/Units.h"
+#include "ComboProperty.h"
 #include "GUI/Models/DoubleDescriptor.h"
 #include "GUI/Models/FTDecayFunctionItems.h"
 #include "GUI/Models/FTDistributionItems.h"
 #include "GUI/Models/GroupItem.h"
 #include "GUI/Models/Lattice2DItems.h"
 #include "Sample/Aggregate/Interferences.h"
+#include "SelectionDescriptor.h"
 
 // TODO (when back compatibility will be broken  again)
 // Make Interference1DLatticeItem::P_DECAY_FUNCTION and
@@ -86,6 +88,11 @@ DoubleDescriptor Interference1DLatticeItem::rotationAngle() const
     return d;
 }
 
+SelectionDescriptor<FTDecayFunction1DItem*> Interference1DLatticeItem::decayFunction() const
+{
+    return SelectionDescriptor<FTDecayFunction1DItem*>(item<GroupItem>(P_DECAY_FUNCTION));
+}
+
 // --------------------------------------------------------------------------------------------- //
 
 Lattice2DItem* Interference2DAbstractLatticeItem::latticeType() const
@@ -424,3 +431,9 @@ DoubleDescriptor InterferenceRadialParaCrystalItem::kappa() const
 {
     return DoubleDescriptor(getItem(P_KAPPA), Unit::unitless);
 }
+
+SelectionDescriptor<FTDistribution1DItem*>
+InterferenceRadialParaCrystalItem::probabilityDistribution() const
+{
+    return SelectionDescriptor<FTDistribution1DItem*>(item<GroupItem>(P_PDF));
+}
diff --git a/GUI/Models/InterferenceItems.h b/GUI/Models/InterferenceItems.h
index b079d5a20e1..d808544e9fe 100644
--- a/GUI/Models/InterferenceItems.h
+++ b/GUI/Models/InterferenceItems.h
@@ -15,6 +15,7 @@
 #ifndef BORNAGAIN_GUI_MODELS_INTERFERENCEITEMS_H
 #define BORNAGAIN_GUI_MODELS_INTERFERENCEITEMS_H
 
+#include "GUI/Models/SelectionDescriptor.h"
 #include "GUI/Models/SessionGraphicsItem.h"
 
 class FTDecayFunction1DItem;
@@ -55,6 +56,7 @@ public:
     DoubleDescriptor rotationAngle() const;
 
     template <typename T> T* setDecayFunctionType();
+    SelectionDescriptor<FTDecayFunction1DItem*> decayFunction() const;
 };
 
 class Interference2DAbstractLatticeItem : public InterferenceItem {
@@ -167,7 +169,7 @@ public:
     DoubleDescriptor dampingLength() const;
     DoubleDescriptor domainSize() const;
     DoubleDescriptor kappa() const;
-
+    SelectionDescriptor<FTDistribution1DItem*> probabilityDistribution() const;
     template <typename T> T* setPDFType();
 };
 
-- 
GitLab