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 &parameters, QVector<double> values)
 {
     qDebug() << "FitSuiteWidget::onUpdateParameters" << parameters << values;
@@ -134,7 +135,6 @@ void FitSuiteWidget::onUpdateParameters(const QStringList &parameters, 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