From 0e7c336e2d7533721e40d003d0b5b65d3cc06bdb Mon Sep 17 00:00:00 2001
From: Gennady Pospelov <g.pospelov@fz-juelich.de>
Date: Mon, 6 Feb 2017 16:35:57 +0100
Subject: [PATCH] ParticleDistributionItem now takes into account limits while
 creating the distribution.

---
 GUI/coregui/Models/ParticleDistributionItem.cpp | 10 +++++++++-
 GUI/coregui/Models/RealLimitsItems.cpp          |  6 ++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/GUI/coregui/Models/ParticleDistributionItem.cpp b/GUI/coregui/Models/ParticleDistributionItem.cpp
index df9ec6db891..3396271c616 100644
--- a/GUI/coregui/Models/ParticleDistributionItem.cpp
+++ b/GUI/coregui/Models/ParticleDistributionItem.cpp
@@ -23,6 +23,7 @@
 #include "TransformFromDomain.h"
 #include "TransformToDomain.h"
 #include "ParameterTreeUtils.h"
+#include "RealLimitsItems.h"
 
 const QString ParticleDistributionItem::P_DISTRIBUTED_PARAMETER = "Distributed parameter";
 const QString ParticleDistributionItem::P_DISTRIBUTION = "Distribution";
@@ -67,6 +68,13 @@ std::unique_ptr<ParticleDistribution> ParticleDistributionItem::createParticleDi
                 getGroupItem(ParticleDistributionItem::P_DISTRIBUTION));
     Q_ASSERT(distr_item);
 
+    RealLimits limits = RealLimits::limitless();
+    if(distr_item->isTag(DistributionItem::P_LIMITS)) {
+        auto limitsItem = dynamic_cast<RealLimitsItem*>(
+                    distr_item->getGroupItem(DistributionItem::P_LIMITS));
+        limits = limitsItem->createRealLimits();
+    }
+
     auto P_distribution = distr_item->createDistribution();
 
     auto prop
@@ -78,7 +86,7 @@ std::unique_ptr<ParticleDistribution> ParticleDistributionItem::createParticleDi
 
     int nbr_samples = distr_item->getItemValue(DistributionItem::P_NUMBER_OF_SAMPLES).toInt();
     double sigma_factor = distr_item->getItemValue(DistributionItem::P_SIGMA_FACTOR).toDouble();
-    ParameterDistribution par_distr(domain_par, *P_distribution, nbr_samples, sigma_factor);
+    ParameterDistribution par_distr(domain_par, *P_distribution, nbr_samples, sigma_factor, limits);
     auto result = GUIHelpers::make_unique<ParticleDistribution>(*P_particle, par_distr);
     double abundance = getItemValue(ParticleItem::P_ABUNDANCE).toDouble();
     result->setAbundance(abundance);
diff --git a/GUI/coregui/Models/RealLimitsItems.cpp b/GUI/coregui/Models/RealLimitsItems.cpp
index a23277b1bc5..8d379bb3ad3 100644
--- a/GUI/coregui/Models/RealLimitsItems.cpp
+++ b/GUI/coregui/Models/RealLimitsItems.cpp
@@ -49,8 +49,10 @@ RealLimits PositiveItem::createRealLimits() const
 LimitedItem::LimitedItem()
     : RealLimitsItem(Constants::RealLimitsLimitedType)
 {
-    addProperty(P_XMIN, 0.0)->setToolTip("Minimum allowed value");
-    addProperty(P_XMAX, 1.0)->setToolTip("Maximum allowed value");
+    addProperty(P_XMIN, 0.0)->setToolTip("Minimum allowed value")
+        .setLimits(RealLimits::limitless());
+    addProperty(P_XMAX, 1.0)->setToolTip("Maximum allowed value")
+        .setLimits(RealLimits::limitless());
 }
 
 RealLimits LimitedItem::createRealLimits() const
-- 
GitLab