diff --git a/GUI/coregui/Models/FitParameterItems.cpp b/GUI/coregui/Models/FitParameterItems.cpp index 4613d8b4f3ca6a4f8fd3039c2d5321225c816b3f..f42365a9416b20a8007eb689e0eac1177ba8f2ce 100644 --- a/GUI/coregui/Models/FitParameterItems.cpp +++ b/GUI/coregui/Models/FitParameterItems.cpp @@ -20,6 +20,7 @@ #include "ModelPath.h" #include "FitParameter.h" #include "ParameterTreeItems.h" +#include "JobItem.h" #include <cmath> namespace @@ -122,15 +123,16 @@ std::unique_ptr<FitParameter> FitParameterItem::createFitParameter() const result->setStartValue(getItemValue(FitParameterItem::P_START_VALUE).toDouble()); result->setLimits(attLimits()); - const SessionItem* jobItem = ModelPath::ancestor(this, Constants::JobItemType); + const JobItem* jobItem = dynamic_cast<const JobItem*>(ModelPath::ancestor(this, Constants::JobItemType)); Q_ASSERT(jobItem); foreach (SessionItem* linkItem, getItems(FitParameterItem::T_LINK)) { -// QString link = linkItem->getItemValue(FitParameterLinkItem::P_LINK).toString(); -// std::string domainPath = "*" + ModelPath::translateParameterName(jobItem, link); -// linkItem->setItemValue(FitParameterLinkItem::P_DOMAIN, QString::fromStdString(domainPath)); + QString link = linkItem->getItemValue(FitParameterLinkItem::P_LINK).toString(); + + ParameterItem *parItem = dynamic_cast<ParameterItem*>( + ModelPath::getItemFromPath(link, jobItem->parameterContainerItem())); + Q_ASSERT(parItem); - ParameterItem *parItem = dynamic_cast<ParameterItem*>(linkItem); QString translation = "*/" + ModelPath::itemPathTranslation(*parItem->linkedItem(), jobItem); parItem->setItemValue(ParameterItem::P_DOMAIN, translation); diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp index 3523b832b2571a9876e4bb4c3943a8bde80943fa..dadc12bcf98be952abccb6d2f46f6378ffccd52e 100644 --- a/GUI/coregui/Models/JobItem.cpp +++ b/GUI/coregui/Models/JobItem.cpp @@ -276,7 +276,13 @@ FitSuiteItem *JobItem::fitSuiteItem() return dynamic_cast<FitSuiteItem *>(getItem(JobItem::T_FIT_SUITE)); } -ParameterContainerItem *JobItem::parameterContainerItem() +ParameterContainerItem* JobItem::parameterContainerItem() +{ + return const_cast<ParameterContainerItem*>( + static_cast<const JobItem*>(this)->parameterContainerItem()); +} + +const ParameterContainerItem *JobItem::parameterContainerItem() const { return dynamic_cast<ParameterContainerItem *>(getItem(JobItem::T_PARAMETER_TREE)); } diff --git a/GUI/coregui/Models/JobItem.h b/GUI/coregui/Models/JobItem.h index b8f18cc05892a40af4d4425f01106bee78b1671e..3451404b22b4b7939e4692b5a576415570f98cdb 100644 --- a/GUI/coregui/Models/JobItem.h +++ b/GUI/coregui/Models/JobItem.h @@ -96,6 +96,8 @@ public: FitSuiteItem *fitSuiteItem(); ParameterContainerItem *parameterContainerItem(); + const ParameterContainerItem *parameterContainerItem() const; + FitParameterContainerItem *fitParameterContainerItem(); RealDataItem *realDataItem();