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