From 61361b89835fcd29df44ef4d42de998e2fbeaa76 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Fri, 27 Jan 2017 13:43:11 +0100 Subject: [PATCH] ParameterItem now can deal with ScientificDoubleProperty. --- GUI/coregui/Models/ParameterTreeBuilder.cpp | 21 ++++++++++++++++--- GUI/coregui/Models/ParameterTreeItems.cpp | 13 ++++++++++-- GUI/coregui/Models/ScientificDoubleProperty.h | 3 +++ 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/GUI/coregui/Models/ParameterTreeBuilder.cpp b/GUI/coregui/Models/ParameterTreeBuilder.cpp index ecff9b83ee5..e2705334c23 100644 --- a/GUI/coregui/Models/ParameterTreeBuilder.cpp +++ b/GUI/coregui/Models/ParameterTreeBuilder.cpp @@ -22,6 +22,7 @@ #include "MultiLayerItem.h" #include "ParameterTreeItems.h" #include "SampleModel.h" +#include "ScientificDoubleProperty.h" #include <QStack> void ParameterTreeBuilder::createParameterTree(JobItem *item, const QString &tag) @@ -54,12 +55,19 @@ void ParameterTreeBuilder::handleItem(SessionItem *tree, SessionItem *source) else if (tree->modelType() == Constants::ParameterType) { tree->setDisplayName(source->itemName()); - tree->setValue(source->value()); + + double sourceValue = source->value().toDouble(); + if(source->value().typeName() == QString("ScientificDoubleProperty")) { + ScientificDoubleProperty intensity = source->value().value<ScientificDoubleProperty>(); + sourceValue=intensity.getValue(); + } + + tree->setValue(QVariant(sourceValue)); QString path = ModelPath::getPathFromIndex(source->index()); int firstSlash = path.indexOf('/'); path = path.mid(firstSlash + 1); - tree->setItemValue(ParameterItem::P_LINK, path); - tree->setItemValue(ParameterItem::P_BACKUP, source->value()); + tree->setItemValue(ParameterItem::P_LINK, path); + tree->setItemValue(ParameterItem::P_BACKUP, sourceValue); return; } @@ -75,6 +83,13 @@ void ParameterTreeBuilder::handleItem(SessionItem *tree, SessionItem *source) = tree->model()->insertNewItem(Constants::ParameterType, tree->index()); handleItem(branch, child); } + else if (child->value().typeName() == QString("ScientificDoubleProperty")) { + SessionItem *branch + = tree->model()->insertNewItem(Constants::ParameterType, tree->index()); + handleItem(branch, child); + + } + } else if (child->modelType() == Constants::GroupItemType) { SessionItem *currentItem = dynamic_cast<GroupItem *>(child)->group()->getCurrentItem(); diff --git a/GUI/coregui/Models/ParameterTreeItems.cpp b/GUI/coregui/Models/ParameterTreeItems.cpp index 601d6d243ab..22ea863b053 100644 --- a/GUI/coregui/Models/ParameterTreeItems.cpp +++ b/GUI/coregui/Models/ParameterTreeItems.cpp @@ -18,6 +18,7 @@ #include "ModelPath.h" #include "SessionModel.h" #include "FitParameterHelper.h" +#include "ScientificDoubleProperty.h" // ---------------------------------------------------------------------------- @@ -53,8 +54,16 @@ void ParameterItem::propagateValueLink(bool backup) if (backup) setValue(getItemValue(P_BACKUP)); SessionItem *item = getLinkedItem(); - if (item) - item->setValue(value()); + if (item) { + + if(item->value().typeName() == QString("ScientificDoubleProperty")) { + ScientificDoubleProperty intensity = item->value().value<ScientificDoubleProperty>(); + intensity.setValue(value().toDouble()); + item->setValue(intensity.getVariant()); + } else { + item->setValue(value()); + } + } } //! Returns corresponding linked item in MultiLayerItem/IsntrumentItem diff --git a/GUI/coregui/Models/ScientificDoubleProperty.h b/GUI/coregui/Models/ScientificDoubleProperty.h index c0a82249ceb..fc49324c64b 100644 --- a/GUI/coregui/Models/ScientificDoubleProperty.h +++ b/GUI/coregui/Models/ScientificDoubleProperty.h @@ -17,6 +17,9 @@ #ifndef SCIENTIFICDOUBLEPROPERTY_H #define SCIENTIFICDOUBLEPROPERTY_H +#include "WinDllMacros.h" +#include <QString> +#include <QVariant> //! The ScientificDoubleProperty for SessionItem and PropertyEditor //! -- GitLab