From 4cbc7ce809dfa9288cea05d7d284111028ae3b05 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Mon, 13 Jun 2016 13:02:22 +0200 Subject: [PATCH] Renaming in FitParameter models to better reflect meaning of classes. --- GUI/coregui/Models/FitModelHelper.h | 21 ++++--- ...bsModel.cpp => FitParameterProxyModel.cpp} | 2 +- ...terAbsModel.h => FitParameterProxyModel.h} | 2 +- GUI/coregui/Models/JobModel.cpp | 4 +- ...elBuilder.cpp => ParameterTreeBuilder.cpp} | 63 ++++++++----------- ...rModelBuilder.h => ParameterTreeBuilder.h} | 16 ++--- .../Views/FitWidgets/FitParameterWidget.cpp | 2 +- .../Views/FitWidgets/FitSuiteWidget.cpp | 4 +- .../JobWidgets/ParameterTuningWidget.cpp | 2 +- Tests/UnitTests/GUI/TestFitParameterModel.h | 2 +- 10 files changed, 56 insertions(+), 62 deletions(-) rename GUI/coregui/Models/{FitParameterAbsModel.cpp => FitParameterProxyModel.cpp} (99%) rename GUI/coregui/Models/{FitParameterAbsModel.h => FitParameterProxyModel.h} (97%) rename GUI/coregui/Models/{ParameterModelBuilder.cpp => ParameterTreeBuilder.cpp} (61%) rename GUI/coregui/Models/{ParameterModelBuilder.h => ParameterTreeBuilder.h} (69%) diff --git a/GUI/coregui/Models/FitModelHelper.h b/GUI/coregui/Models/FitModelHelper.h index ecdb5eff614..ede3d9165cb 100644 --- a/GUI/coregui/Models/FitModelHelper.h +++ b/GUI/coregui/Models/FitModelHelper.h @@ -18,7 +18,6 @@ #define FITMODELHELPER_H #include "WinDllMacros.h" -#include "SessionModel.h" #include <QMap> class ParameterItem; @@ -27,22 +26,26 @@ class FitParameterContainerItem; class JobItem; //! The FitModelHelper class contains set of convenience static methods to handle various fitting -//! items in given JobItem +//! items in given JobItem. -class BA_CORE_API_ FitModelHelper : public SessionModel +class BA_CORE_API_ FitModelHelper { public: - static void createFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem); + static void createFitParameter(FitParameterContainerItem *container, + ParameterItem *parameterItem); - static void removeFromFitParameters(FitParameterContainerItem *container, ParameterItem *parameterItem); - static void addToFitParameter(FitParameterContainerItem *container, ParameterItem *parameterItem, const QString &fitParName); + static void removeFromFitParameters(FitParameterContainerItem *container, + ParameterItem *parameterItem); + static void addToFitParameter(FitParameterContainerItem *container, + ParameterItem *parameterItem, const QString &fitParName); - static FitParameterItem *getFitParameterItem(FitParameterContainerItem *container, ParameterItem *parameterItem); + static FitParameterItem *getFitParameterItem(FitParameterContainerItem *container, + ParameterItem *parameterItem); static QStringList getFitParameterNames(FitParameterContainerItem *container); static QString getParameterItemPath(ParameterItem *parameterItem); - static ParameterItem *getParameterItem(FitParameterContainerItem *container, const QString &link); - + static ParameterItem *getParameterItem(FitParameterContainerItem *container, + const QString &link); }; #endif diff --git a/GUI/coregui/Models/FitParameterAbsModel.cpp b/GUI/coregui/Models/FitParameterProxyModel.cpp similarity index 99% rename from GUI/coregui/Models/FitParameterAbsModel.cpp rename to GUI/coregui/Models/FitParameterProxyModel.cpp index 86e97614a8b..3f138b94bac 100644 --- a/GUI/coregui/Models/FitParameterAbsModel.cpp +++ b/GUI/coregui/Models/FitParameterProxyModel.cpp @@ -14,7 +14,7 @@ // // ************************************************************************** // -#include "FitParameterAbsModel.h" +#include "FitParameterProxyModel.h" #include "SessionItem.h" #include "FitParameterItems.h" #include "SessionModel.h" diff --git a/GUI/coregui/Models/FitParameterAbsModel.h b/GUI/coregui/Models/FitParameterProxyModel.h similarity index 97% rename from GUI/coregui/Models/FitParameterAbsModel.h rename to GUI/coregui/Models/FitParameterProxyModel.h index 16ebc34d267..fe5459c422f 100644 --- a/GUI/coregui/Models/FitParameterAbsModel.h +++ b/GUI/coregui/Models/FitParameterProxyModel.h @@ -26,7 +26,7 @@ class SessionItem; //! The FitParameterProxyModel adopt original JobModel to show items from FitParameterContainer //! in 5 column tree view. -//! (It's not a true proxy model, it +//! It is derived from QAbstractItemModel (and not from QAbstractProxyModel). class BA_CORE_API_ FitParameterProxyModel : public QAbstractItemModel { diff --git a/GUI/coregui/Models/JobModel.cpp b/GUI/coregui/Models/JobModel.cpp index 69a13d1a479..1632c19cdff 100644 --- a/GUI/coregui/Models/JobModel.cpp +++ b/GUI/coregui/Models/JobModel.cpp @@ -24,7 +24,7 @@ #include "MultiLayerItem.h" #include "InstrumentItem.h" #include "RealDataItem.h" -#include "ParameterModelBuilder.h" +#include "ParameterTreeBuilder.h" #include "ParameterTreeItems.h" #include "SimulationOptionsItem.h" #include "JobResultsPresenter.h" @@ -97,7 +97,7 @@ JobItem *JobModel::addJob(const MultiLayerItem *multiLayerItem, jobItem->getItem(JobItem::P_SAMPLE_NAME)->setValue(multiLayerItem->itemName()); jobItem->getItem(JobItem::P_INSTRUMENT_NAME)->setValue(instrumentItem->itemName()); - ParameterModelBuilder::createParameterTree(jobItem, JobItem::T_PARAMETER_TREE); + ParameterTreeBuilder::createParameterTree(jobItem, JobItem::T_PARAMETER_TREE); insertNewItem(Constants::IntensityDataType, indexOfItem(jobItem), -1, JobItem::T_OUTPUT); //insertNewItem(Constants::IntensityDataType, indexOfItem(jobItem), -1, JobItem::T_REALDATA); diff --git a/GUI/coregui/Models/ParameterModelBuilder.cpp b/GUI/coregui/Models/ParameterTreeBuilder.cpp similarity index 61% rename from GUI/coregui/Models/ParameterModelBuilder.cpp rename to GUI/coregui/Models/ParameterTreeBuilder.cpp index eebf20cb6dd..969a51c548b 100644 --- a/GUI/coregui/Models/ParameterModelBuilder.cpp +++ b/GUI/coregui/Models/ParameterTreeBuilder.cpp @@ -2,8 +2,8 @@ // // BornAgain: simulate and fit scattering at grazing incidence // -//! @file coregui/Models/ParameterModelBuilder.cpp -//! @brief Implements class ParameterModelBuilder +//! @file coregui/Models/ParameterTreeBuilder.cpp +//! @brief Implements class ParameterTreeBuilder //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) @@ -14,42 +14,27 @@ // // ************************************************************************** // -#include "ParameterModelBuilder.h" +#include "ParameterTreeBuilder.h" #include "SampleModel.h" -#include "InstrumentModel.h" -#include "InstrumentItem.h" #include "JobItem.h" -#include "JobModel.h" -#include "BeamItem.h" -#include "BeamDistributionItem.h" -#include "BeamWavelengthItem.h" #include "MultiLayerItem.h" -#include "InstrumentItem.h" -#include "AngleProperty.h" -#include "GUIHelpers.h" -#include "DistributionItem.h" #include "GroupItem.h" -#include "JobItem.h" #include "ModelPath.h" #include "ParameterTreeItems.h" #include "FitModelHelper.h" -#include <QStandardItem> -#include <QStandardItemModel> #include <QStack> -#include <QDebug> - -void ParameterModelBuilder::createParameterTree(JobItem *item, const QString &tag) +void ParameterTreeBuilder::createParameterTree(JobItem *item, const QString &tag) { -// SessionItem *container = item->model()->insertNewItem(Constants::ParameterLabelType, item->index(), -1, tag); -// container->setDisplayName("Parameter Tree Container"); + SessionItem *container + = item->model()->insertNewItem(Constants::ParameterContainerType, item->index(), -1, tag); - SessionItem *container = item->model()->insertNewItem(Constants::ParameterContainerType, item->index(), -1, tag); - - SessionItem *multiLayer = container->model()->insertNewItem(Constants::ParameterLabelType, container->index()); + SessionItem *multiLayer + = container->model()->insertNewItem(Constants::ParameterLabelType, container->index()); handleItem(multiLayer, item->getItem(JobItem::T_SAMPLE)); - SessionItem *instrument = container->model()->insertNewItem(Constants::ParameterLabelType, container->index()); + SessionItem *instrument + = container->model()->insertNewItem(Constants::ParameterLabelType, container->index()); handleItem(instrument, item->getItem(JobItem::T_INSTRUMENT)); #ifndef NDEBUG @@ -60,7 +45,7 @@ void ParameterModelBuilder::createParameterTree(JobItem *item, const QString &ta #endif } -void ParameterModelBuilder::handleItem(SessionItem *tree, SessionItem *source) +void ParameterTreeBuilder::handleItem(SessionItem *tree, SessionItem *source) { if (tree->modelType() == Constants::ParameterLabelType) { tree->setDisplayName(source->itemName()); @@ -86,17 +71,21 @@ void ParameterModelBuilder::handleItem(SessionItem *tree, SessionItem *source) if (child->isVisible() && child->isEnabled()) { if (child->modelType() == Constants::PropertyType) { if (child->value().type() == QVariant::Double) { - SessionItem *branch = tree->model()->insertNewItem(Constants::ParameterType, tree->index()); + 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(); + SessionItem *currentItem + = dynamic_cast<GroupItem *>(child)->group()->getCurrentItem(); if (currentItem && currentItem->rowCount() > 0) { - SessionItem *branch = tree->model()->insertNewItem(Constants::ParameterLabelType, tree->index()); + SessionItem *branch = tree->model()->insertNewItem( + Constants::ParameterLabelType, tree->index()); handleItem(branch, currentItem); } } else { - SessionItem *branch = tree->model()->insertNewItem(Constants::ParameterLabelType, tree->index()); + SessionItem *branch + = tree->model()->insertNewItem(Constants::ParameterLabelType, tree->index()); handleItem(branch, child); } } @@ -104,24 +93,24 @@ void ParameterModelBuilder::handleItem(SessionItem *tree, SessionItem *source) } //! For every ParameterItem in JobItem's ParameterTree container creates a link to domain. -void ParameterModelBuilder::populateDomainLinks(JobItem *jobItem, const QString &tag) +void ParameterTreeBuilder::populateDomainLinks(JobItem *jobItem, const QString &tag) { - SessionItem *current = jobItem->getItem(tag); //this is container - QStack<SessionItem*> stack; + SessionItem *current = jobItem->getItem(tag); // this is container + QStack<SessionItem *> stack; stack.push(current); - while(!stack.empty()) { + while (!stack.empty()) { current = stack.pop(); if (current->modelType() == Constants::ParameterLabelType) { for (SessionItem *child : current->getItems()) { stack.push(child); } } else { - if(ParameterItem *parItem = dynamic_cast<ParameterItem *>(current)) { + if (ParameterItem *parItem = dynamic_cast<ParameterItem *>(current)) { QString parItemPath = FitModelHelper::getParameterItemPath(parItem); - std::string domainPath = ModelPath::translateParameterName(jobItem->getMultiLayerItem()->parent(), parItemPath); + std::string domainPath = ModelPath::translateParameterName( + jobItem->getMultiLayerItem()->parent(), parItemPath); parItem->setItemValue(ParameterItem::P_DOMAIN, QString::fromStdString(domainPath)); } } } - } diff --git a/GUI/coregui/Models/ParameterModelBuilder.h b/GUI/coregui/Models/ParameterTreeBuilder.h similarity index 69% rename from GUI/coregui/Models/ParameterModelBuilder.h rename to GUI/coregui/Models/ParameterTreeBuilder.h index a1df64b7fad..89fa4ec557a 100644 --- a/GUI/coregui/Models/ParameterModelBuilder.h +++ b/GUI/coregui/Models/ParameterTreeBuilder.h @@ -2,8 +2,8 @@ // // BornAgain: simulate and fit scattering at grazing incidence // -//! @file coregui/Models/ParameterModelBuilder.h -//! @brief Declares class ParameterModelBuilder +//! @file coregui/Models/ParameterTreeBuilder.h +//! @brief Declares class ParameterTreeBuilder //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) @@ -14,15 +14,19 @@ // // ************************************************************************** // -#ifndef PARAMETERMODELBUILDER_H -#define PARAMETERMODELBUILDER_H +#ifndef PARAMETERTREEBUILDER_H +#define PARAMETERTREEBUILDER_H #include <QString> class JobItem; class SessionItem; -class ParameterModelBuilder +//! The ParameterTreeBuilder class helps JobModel to create a container with ParameterItem's. +//! The ParameterItem appears in RealTimeView and provides real time tuning of MultiLayerItem +//! and InstrumentItem. + +class ParameterTreeBuilder { public: static void createParameterTree(JobItem *item, const QString &tag = QString()); @@ -31,6 +35,4 @@ private: static void populateDomainLinks(JobItem *jobItem, const QString &tag); }; - #endif - diff --git a/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp b/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp index 1dedeedb3af..14568e61fab 100644 --- a/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp +++ b/GUI/coregui/Views/FitWidgets/FitParameterWidget.cpp @@ -22,7 +22,7 @@ #include "ParameterTuningWidget.h" #include "FilterPropertyProxy.h" #include "ParameterTreeItems.h" -#include "FitParameterAbsModel.h" +#include "FitParameterProxyModel.h" #include "FitModelHelper.h" #include "SessionModelDelegate.h" #include "CustomEventFilters.h" diff --git a/GUI/coregui/Views/FitWidgets/FitSuiteWidget.cpp b/GUI/coregui/Views/FitWidgets/FitSuiteWidget.cpp index a9dc7e08bbe..a91c1315308 100644 --- a/GUI/coregui/Views/FitWidgets/FitSuiteWidget.cpp +++ b/GUI/coregui/Views/FitWidgets/FitSuiteWidget.cpp @@ -109,7 +109,8 @@ void FitSuiteWidget::onUpdatePlots(OutputData<double> *sim, OutputData<double> * m_observer->finishedPlotting(); } -//! Propagates current values of fit parameters back to FitParameterItem and ParameterItem +//! Propagates current values of fit parameters as reported by FitSuite observer back to JobItem. + void FitSuiteWidget::onUpdateParameters(const QStringList ¶meters, QVector<double> values) { qDebug() << "FitSuiteWidget::onUpdateParameters" << parameters << values; @@ -134,7 +135,6 @@ void FitSuiteWidget::onUpdateParameters(const QStringList ¶meters, QVector<d } } - } void FitSuiteWidget::onUpdateStatus(const QString &text) diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp index 6e96a77a478..ef8fd56d47c 100644 --- a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp +++ b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp @@ -18,7 +18,7 @@ #include "JobQueueData.h" #include "JobItem.h" #include "SliderSettingsWidget.h" -#include "ParameterModelBuilder.h" +#include "ParameterTreeBuilder.h" #include "GUIHelpers.h" #include "ParameterTuningDelegate.h" #include "JobModel.h" diff --git a/Tests/UnitTests/GUI/TestFitParameterModel.h b/Tests/UnitTests/GUI/TestFitParameterModel.h index 637fa4fbd28..527f9a95c0d 100644 --- a/Tests/UnitTests/GUI/TestFitParameterModel.h +++ b/Tests/UnitTests/GUI/TestFitParameterModel.h @@ -3,7 +3,7 @@ #include <QtTest> #include "JobModel.h" -#include "FitParameterAbsModel.h" +#include "FitParameterProxyModel.h" #include "FitParameterItems.h" #include "FitSuiteItem.h" -- GitLab