From 85e3a3afab26c140ec46daf402681d0de6356643 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de>
Date: Tue, 2 Nov 2021 08:57:44 +0100
Subject: [PATCH] move project invocation to Views

---
 GUI/Models/Sample/SampleListModel.cpp                     | 8 +++-----
 GUI/Models/Sample/SampleListModel.h                       | 4 +++-
 GUI/Views/SampleDesigner/FormLayouter.cpp                 | 2 +-
 .../SampleDesigner}/GroupBoxCollapser.cpp                 | 2 +-
 .../SampleDesigner}/GroupBoxCollapser.h                   | 8 ++++----
 GUI/Views/SampleDesigner/InterferenceForm.cpp             | 2 +-
 GUI/Views/SampleDesigner/LayerForm.cpp                    | 2 +-
 GUI/Views/SampleDesigner/MesoCrystalForm.cpp              | 2 +-
 GUI/Views/SampleDesigner/MultiLayerForm.cpp               | 2 +-
 GUI/Views/SampleDesigner/ParticleCompositionForm.cpp      | 2 +-
 GUI/Views/SampleDesigner/ParticleCoreShellForm.cpp        | 2 +-
 GUI/Views/SampleDesigner/ParticleForm.cpp                 | 2 +-
 GUI/Views/SampleDesigner/ParticleLayoutForm.cpp           | 2 +-
 GUI/Views/SampleDesigner/SampleListView.cpp               | 4 +++-
 GUI/Views/Toplevel/ProjectSettingsView.cpp                | 2 +-
 GUI/Views/Toplevel/SimulationView.cpp                     | 2 +-
 GUI/Views/Toplevel/WelcomeView.cpp                        | 2 +-
 17 files changed, 26 insertions(+), 24 deletions(-)
 rename GUI/{CommonWidgets => Views/SampleDesigner}/GroupBoxCollapser.cpp (98%)
 rename GUI/{CommonWidgets => Views/SampleDesigner}/GroupBoxCollapser.h (90%)

diff --git a/GUI/Models/Sample/SampleListModel.cpp b/GUI/Models/Sample/SampleListModel.cpp
index 0091de36855..31a7f08bc11 100644
--- a/GUI/Models/Sample/SampleListModel.cpp
+++ b/GUI/Models/Sample/SampleListModel.cpp
@@ -13,13 +13,10 @@
 //  ************************************************************************************************
 
 #include "GUI/Models/Sample/SampleListModel.h"
-#include "GUI/Application/Application.h"
 #include "GUI/Models/Sample/GUIExamplesFactory.h"
 #include "GUI/Mapper/ModelUtils.h"
 #include "GUI/Items/MultiLayerItem.h"
 #include "GUI/Models/Sample/SampleModel.h"
-#include "GUI/Project/projectmanager.h"
-#include <QApplication>
 #include <QFontMetrics>
 #include <QIcon>
 
@@ -142,13 +139,14 @@ QModelIndex SampleListModel::createSample()
 
 QModelIndex SampleListModel::createSampleFromExamples(const QString& className,
                                                       const QString& title,
-                                                      const QString& description)
+                                                      const QString& description,
+                                                      MaterialModel* materialModel)
 {
     const int row = m_sampleModel->multiLayerItems().size();
     beginInsertRows(QModelIndex(), row, row);
 
     auto* sample = dynamic_cast<MultiLayerItem*>(GUIExamplesFactory::createSampleItems(
-        className, m_sampleModel, ProjectManager::instance()->document()->materialModel()));
+        className, m_sampleModel, materialModel));
     sample->setItemName(title);
     sample->setDescription(description);
 
diff --git a/GUI/Models/Sample/SampleListModel.h b/GUI/Models/Sample/SampleListModel.h
index 427eb4a7db6..1075037508f 100644
--- a/GUI/Models/Sample/SampleListModel.h
+++ b/GUI/Models/Sample/SampleListModel.h
@@ -19,6 +19,7 @@
 #include <QSet>
 
 class SampleModel;
+class MaterialModel;
 class MultiLayerItem;
 
 //! List model for sample selection (used in the left pane of the layer oriented sample editor)
@@ -43,7 +44,8 @@ public:
     //! Create a new sample (multilayer) and return the index of it.
     QModelIndex createSample();
     QModelIndex createSampleFromExamples(const QString& className, const QString& title,
-                                         const QString& description);
+                                         const QString& description,
+                                         MaterialModel* materialModel);
 
 private:
     SampleModel* m_sampleModel = nullptr;
diff --git a/GUI/Views/SampleDesigner/FormLayouter.cpp b/GUI/Views/SampleDesigner/FormLayouter.cpp
index c0a6d8c510e..2e71e9c8eb9 100644
--- a/GUI/Views/SampleDesigner/FormLayouter.cpp
+++ b/GUI/Views/SampleDesigner/FormLayouter.cpp
@@ -16,7 +16,7 @@
 #include "GUI/Models/Types/UIntDescriptor.h"
 #include "GUI/Models/Types/VectorDescriptor.h"
 #include "GUI/CommonWidgets/DoubleSpinBox.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/LayerEditorUtils.h"
 #include "GUI/Views/SampleDesigner/SampleEditorController.h"
 
diff --git a/GUI/CommonWidgets/GroupBoxCollapser.cpp b/GUI/Views/SampleDesigner/GroupBoxCollapser.cpp
similarity index 98%
rename from GUI/CommonWidgets/GroupBoxCollapser.cpp
rename to GUI/Views/SampleDesigner/GroupBoxCollapser.cpp
index 17719ed23e2..1d8113b58fb 100644
--- a/GUI/CommonWidgets/GroupBoxCollapser.cpp
+++ b/GUI/Views/SampleDesigner/GroupBoxCollapser.cpp
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/CommonWidgets/GroupBoxCollapser.cpp
+//! @file      GUI/Views/SampleDesigner/GroupBoxCollapser.cpp
 //! @brief     Implements class GroupBoxCollapser
 //!
 //! @homepage  http://www.bornagainproject.org
diff --git a/GUI/CommonWidgets/GroupBoxCollapser.h b/GUI/Views/SampleDesigner/GroupBoxCollapser.h
similarity index 90%
rename from GUI/CommonWidgets/GroupBoxCollapser.h
rename to GUI/Views/SampleDesigner/GroupBoxCollapser.h
index 167c8252fbd..b3d5a356650 100644
--- a/GUI/CommonWidgets/GroupBoxCollapser.h
+++ b/GUI/Views/SampleDesigner/GroupBoxCollapser.h
@@ -2,7 +2,7 @@
 //
 //  BornAgain: simulate and fit reflection and scattering
 //
-//! @file      GUI/CommonWidgets/GroupBoxCollapser.h
+//! @file      GUI/Views/SampleDesigner/GroupBoxCollapser.h
 //! @brief     Defines class GroupBoxCollapser
 //!
 //! @homepage  http://www.bornagainproject.org
@@ -12,8 +12,8 @@
 //
 //  ************************************************************************************************
 
-#ifndef BORNAGAIN_GUI_COMMONWIDGETS_GROUPBOXCOLLAPSER_H
-#define BORNAGAIN_GUI_COMMONWIDGETS_GROUPBOXCOLLAPSER_H
+#ifndef BORNAGAIN_GUI_VIEWS_SAMPLEDESIGNER_GROUPBOXCOLLAPSER_H
+#define BORNAGAIN_GUI_VIEWS_SAMPLEDESIGNER_GROUPBOXCOLLAPSER_H
 
 #include <QObject>
 
@@ -62,4 +62,4 @@ private:
 };
 
 
-#endif // BORNAGAIN_GUI_COMMONWIDGETS_GROUPBOXCOLLAPSER_H
+#endif // BORNAGAIN_GUI_VIEWS_SAMPLEDESIGNER_GROUPBOXCOLLAPSER_H
diff --git a/GUI/Views/SampleDesigner/InterferenceForm.cpp b/GUI/Views/SampleDesigner/InterferenceForm.cpp
index 29dadd5bc50..994b01f87ef 100644
--- a/GUI/Views/SampleDesigner/InterferenceForm.cpp
+++ b/GUI/Views/SampleDesigner/InterferenceForm.cpp
@@ -15,7 +15,7 @@
 #include "GUI/Views/SampleDesigner/InterferenceForm.h"
 #include "GUI/Items/InterferenceItems.h"
 #include "GUI/Items/ParticleLayoutItem.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/FormLayouter.h"
 #include "GUI/Views/SampleDesigner/SampleEditorController.h"
 #include "GUI/Views/SampleDesigner/SelectionContainerForm.h"
diff --git a/GUI/Views/SampleDesigner/LayerForm.cpp b/GUI/Views/SampleDesigner/LayerForm.cpp
index 9dc0ce3ddbe..043b355d68f 100644
--- a/GUI/Views/SampleDesigner/LayerForm.cpp
+++ b/GUI/Views/SampleDesigner/LayerForm.cpp
@@ -16,7 +16,7 @@
 #include "GUI/Items/LayerItem.h"
 #include "GUI/Items/MultiLayerItem.h"
 #include "GUI/Models/Types/UIntDescriptor.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/MaterialInplaceForm.h"
 #include "GUI/Views/SampleDesigner/ParticleLayoutForm.h"
 #include "GUI/Views/SampleDesigner/SampleEditorController.h"
diff --git a/GUI/Views/SampleDesigner/MesoCrystalForm.cpp b/GUI/Views/SampleDesigner/MesoCrystalForm.cpp
index 458d239f021..08086e1f2a9 100644
--- a/GUI/Views/SampleDesigner/MesoCrystalForm.cpp
+++ b/GUI/Views/SampleDesigner/MesoCrystalForm.cpp
@@ -17,7 +17,7 @@
 #include "GUI/Items/MesoCrystalItem.h"
 #include "GUI/Items/ParticleItem.h"
 #include "GUI/Models/Types/VectorDescriptor.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/FormLayouter.h"
 #include "GUI/Views/SampleDesigner/LayerEditorUtils.h"
 #include "GUI/Views/SampleDesigner/SampleEditorController.h"
diff --git a/GUI/Views/SampleDesigner/MultiLayerForm.cpp b/GUI/Views/SampleDesigner/MultiLayerForm.cpp
index 504deedfce3..d068f23ecbf 100644
--- a/GUI/Views/SampleDesigner/MultiLayerForm.cpp
+++ b/GUI/Views/SampleDesigner/MultiLayerForm.cpp
@@ -16,7 +16,7 @@
 #include "GUI/Items/MultiLayerItem.h"
 #include "GUI/Models/Types/VectorDescriptor.h"
 #include "GUI/CommonWidgets/DoubleSpinBox.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/LayerEditorUtils.h"
 #include "GUI/Views/SampleDesigner/LayerForm.h"
 #include "GUI/Views/SampleDesigner/MesoCrystalForm.h"
diff --git a/GUI/Views/SampleDesigner/ParticleCompositionForm.cpp b/GUI/Views/SampleDesigner/ParticleCompositionForm.cpp
index 4dd1fb3ce1f..a19daf21eb4 100644
--- a/GUI/Views/SampleDesigner/ParticleCompositionForm.cpp
+++ b/GUI/Views/SampleDesigner/ParticleCompositionForm.cpp
@@ -15,7 +15,7 @@
 #include "GUI/Views/SampleDesigner/ParticleCompositionForm.h"
 #include "GUI/Items/ParticleCompositionItem.h"
 #include "GUI/Models/Types/VectorDescriptor.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/FormLayouter.h"
 #include "GUI/Views/SampleDesigner/LayerEditorUtils.h"
 #include "GUI/Views/SampleDesigner/SampleEditorController.h"
diff --git a/GUI/Views/SampleDesigner/ParticleCoreShellForm.cpp b/GUI/Views/SampleDesigner/ParticleCoreShellForm.cpp
index c9004fd32ca..ad84577dd25 100644
--- a/GUI/Views/SampleDesigner/ParticleCoreShellForm.cpp
+++ b/GUI/Views/SampleDesigner/ParticleCoreShellForm.cpp
@@ -18,7 +18,7 @@
 #include "GUI/Items/ParticleCoreShellItem.h"
 #include "GUI/Items/ParticleItem.h"
 #include "GUI/Models/Types/VectorDescriptor.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/SampleEditorController.h"
 #include "GUI/Views/SampleDesigner/SelectionContainerForm.h"
 #include "GUI/utils/ActionFactory.h"
diff --git a/GUI/Views/SampleDesigner/ParticleForm.cpp b/GUI/Views/SampleDesigner/ParticleForm.cpp
index b994a4a733f..250d59bd064 100644
--- a/GUI/Views/SampleDesigner/ParticleForm.cpp
+++ b/GUI/Views/SampleDesigner/ParticleForm.cpp
@@ -17,7 +17,7 @@
 #include "GUI/Items/FormFactorItems.h"
 #include "GUI/Items/ParticleItem.h"
 #include "GUI/Models/Types/VectorDescriptor.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/FormLayouter.h"
 #include "GUI/Views/SampleDesigner/MaterialInplaceForm.h"
 #include "GUI/Views/SampleDesigner/SampleEditorController.h"
diff --git a/GUI/Views/SampleDesigner/ParticleLayoutForm.cpp b/GUI/Views/SampleDesigner/ParticleLayoutForm.cpp
index 470e2289c01..98d95c5369c 100644
--- a/GUI/Views/SampleDesigner/ParticleLayoutForm.cpp
+++ b/GUI/Views/SampleDesigner/ParticleLayoutForm.cpp
@@ -15,7 +15,7 @@
 #include "GUI/Views/SampleDesigner/ParticleLayoutForm.h"
 #include "GUI/Items/ItemWithParticles.h"
 #include "GUI/Items/ParticleLayoutItem.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SampleDesigner/InterferenceForm.h"
 #include "GUI/Views/SampleDesigner/LayerEditorUtils.h"
 #include "GUI/Views/SampleDesigner/LayerForm.h"
diff --git a/GUI/Views/SampleDesigner/SampleListView.cpp b/GUI/Views/SampleDesigner/SampleListView.cpp
index afcd8b6ca36..8e8868ec9bc 100644
--- a/GUI/Views/SampleDesigner/SampleListView.cpp
+++ b/GUI/Views/SampleDesigner/SampleListView.cpp
@@ -19,6 +19,7 @@
 #include "GUI/Models/Sample/SampleListModel.h"
 #include "GUI/CommonWidgets/ItemViewOverlayButtons.h"
 #include "GUI/utils/ItemDelegateForHTML.h"
+#include "GUI/Project/projectmanager.h"
 #include <QAction>
 #include <QDialog>
 #include <QDialogButtonBox>
@@ -142,7 +143,8 @@ void SampleListView::createNewSample()
 void SampleListView::createSampleFromLibrary(const QString& classname, const QString& title,
                                              const QString& description)
 {
-    const QModelIndex newIndex = m_model->createSampleFromExamples(classname, title, description);
+    const QModelIndex newIndex = m_model->createSampleFromExamples(classname, title, description,
+        ProjectManager::instance()->document()->materialModel());
     setCurrentIndex(newIndex);
 }
 
diff --git a/GUI/Views/Toplevel/ProjectSettingsView.cpp b/GUI/Views/Toplevel/ProjectSettingsView.cpp
index 8dd5b2e7293..4b09cff2165 100644
--- a/GUI/Views/Toplevel/ProjectSettingsView.cpp
+++ b/GUI/Views/Toplevel/ProjectSettingsView.cpp
@@ -17,7 +17,7 @@
 #include "GUI/Models/Data/ApplicationModels.h"
 #include "GUI/Models/Instrument/InstrumentModel.h"
 #include "GUI/Models/Sample/SampleModel.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Project/projectdocument.h"
 #include "GUI/utils/qstringutils.h"
 #include "ui_ProjectSettingsView.h"
diff --git a/GUI/Views/Toplevel/SimulationView.cpp b/GUI/Views/Toplevel/SimulationView.cpp
index 4287d170403..808dedd6b8f 100644
--- a/GUI/Views/Toplevel/SimulationView.cpp
+++ b/GUI/Views/Toplevel/SimulationView.cpp
@@ -26,7 +26,7 @@
 #include "GUI/Models/Sample/SampleModel.h"
 #include "GUI/Models/Sample/SampleValidator.h"
 #include "GUI/Items/SimulationOptionsItem.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Views/SimulationWidgets/PythonScriptWidget.h"
 #include "GUI/mainwindow/mainwindow.h"
 #include "GUI/Project/projectdocument.h"
diff --git a/GUI/Views/Toplevel/WelcomeView.cpp b/GUI/Views/Toplevel/WelcomeView.cpp
index a0b0417020f..d5c7e51489f 100644
--- a/GUI/Views/Toplevel/WelcomeView.cpp
+++ b/GUI/Views/Toplevel/WelcomeView.cpp
@@ -13,7 +13,7 @@
 //  ************************************************************************************************
 
 #include "GUI/Views/Toplevel/WelcomeView.h"
-#include "GUI/CommonWidgets/GroupBoxCollapser.h"
+#include "GUI/Views/SampleDesigner/GroupBoxCollapser.h"
 #include "GUI/Project/projectmanager.h"
 #include "GUI/utils/LayoutUtils.h"
 #include "GUI/utils/qstringutils.h"
-- 
GitLab