Skip to content
Snippets Groups Projects
Commit 9938a56a authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

FitParameter values are propagated back to ParameterTree in the course of fitting

parent 66964d58
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,8 @@
#include "FitParameterItems.h"
#include "ComboProperty.h"
#include "ModelPath.h"
#include "SessionModel.h"
#include <QDebug>
// ----------------------------------------------------------------------------
......@@ -32,14 +34,14 @@ FitParameterLinkItem::FitParameterLinkItem()
SessionItem *FitParameterLinkItem::getLinkedItem()
{
// QString link = getItemValue(P_LINK).toString();
// SessionItem *cur = this;
// while (cur && cur->modelType() != Constants::JobItemType) {
// cur = cur->parent();
// }
// link = cur->itemName() + "/" + link;
// return model()->itemForIndex(ModelPath::getIndexFromPath(model(), link));
return 0;
QString link = getItemValue(P_LINK).toString();
SessionItem *cur = this;
while (cur && cur->modelType() != Constants::JobItemType) {
cur = cur->parent();
}
link = cur->itemName() + "/" + link;
qDebug() << "AAAA" << "orig link" << getItemValue(P_LINK).toString() << "parent link" << link << ModelPath::getIndexFromPath(model(), link);
return model()->itemForIndex(ModelPath::getIndexFromPath(model(), link));
}
// ----------------------------------------------------------------------------
......
......@@ -22,6 +22,7 @@
#include "SessionModel.h"
#include <QModelIndex>
#include <QStringList>
#include <QDebug>
#include <sstream>
......@@ -141,6 +142,14 @@ QModelIndex ModelPath::getIndexFromPath(const SessionModel *model, const QString
return QModelIndex();
}
//! returns an item from relative path wrt to given parent
SessionItem *ModelPath::getItemFromPath(const QString &relPath, SessionItem *parent)
{
Q_ASSERT(parent);
QString fullPath = getPathFromIndex(parent->index()) + "/" + relPath;
return parent->model()->itemForIndex(ModelPath::getIndexFromPath(parent->model(), fullPath));
}
QStringList ModelPath::splitParameterName(const QString &par_name)
{
QStringList result;
......
......@@ -49,6 +49,8 @@ public:
static QModelIndex getIndexFromPath(const SessionModel *model, const QString &path);
static SessionItem *getItemFromPath(const QString &relPath, SessionItem *parent);
private:
static QStringList splitParameterName(const QString& par_name);
......
......@@ -25,6 +25,8 @@
#include "DomainFittingBuilder.h"
#include "IntensityDataItem.h"
#include "FitSuite.h"
#include "ModelPath.h"
#include "ParameterTreeItems.h"
#include <QVBoxLayout>
#include <QTabWidget>
#include <QMessageBox>
......@@ -87,18 +89,38 @@ void FitSuiteWidget::onUpdateParameters(const QStringList &parameters, QVector<d
{
qDebug() << "FitSuiteWidget::onUpdateParameters" << parameters << values;
ParameterContainerItem *parContainer = dynamic_cast<ParameterContainerItem *>(m_currentItem->getItem(JobItem::T_PARAMETER_TREE));
Q_ASSERT(parContainer);
SessionItem *fitSuiteItem = m_currentItem->getItem(JobItem::T_FIT_SUITE);
Q_ASSERT(fitSuiteItem);
SessionItem *container = fitSuiteItem->getItem(FitSuiteItem::T_FIT_PARAMETERS);
Q_ASSERT(container);
foreach(SessionItem *parItem, container->getItems(FitParameterContainerItem::T_FIT_PARAMETERS)) {
foreach(SessionItem *linkItem, parItem->getItems(FitParameterItem::T_LINK)) {
foreach(SessionItem *fitParItem, container->getItems(FitParameterContainerItem::T_FIT_PARAMETERS)) {
foreach(SessionItem *linkItem, fitParItem->getItems(FitParameterItem::T_LINK)) {
QString parPath = linkItem->getItemValue(FitParameterLinkItem::P_LINK).toString();
QString domainPath = linkItem->getItemValue(FitParameterLinkItem::P_DOMAIN).toString();
if (parameters.contains(domainPath)) {
int index = parameters.indexOf(domainPath);
SessionItem *parItem = ModelPath::getItemFromPath(parPath, parContainer);
Q_ASSERT(parItem);
parItem->setValue(values[index]);
// FitParameterLinkItem *llItem = dynamic_cast<FitParameterLinkItem *>(linkItem);
// Q_ASSERT(llItem);
// SessionItem *parItem = llItem->getLinkedItem();
// qDebug() << "XX" << domainPath;
// qDebug() << "XXX" << parItem << parItem->modelType() << parItem->value();
// parItem->setValue(values[index]);
// Q_ASSERT(0);
// current->setValue(values[index]);
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment