Skip to content
Snippets Groups Projects
Commit a1b3d825 authored by Matthias Puchner's avatar Matthias Puchner
Browse files

mv materialModel to project document

parent 072e02cf
No related branches found
No related tags found
1 merge request!494Remove SessionModel/SessionItem from MaterialModel/MaterialItem
......@@ -16,6 +16,7 @@
#include "GUI/Model/IO/ProjectUtils.h"
#include "GUI/Model/Instrument/LinkInstrumentManager.h"
#include "GUI/Model/Job/JobModel.h"
#include "GUI/Model/Material/MaterialItem.h"
#include "GUI/Model/Material/MaterialModel.h"
#include "GUI/Model/Project/OutputDataIOService.h"
#include "GUI/Model/Sample/ItemWithMaterial.h"
......@@ -39,6 +40,7 @@ const QString BornAgainVersionAttribute("Version");
const QString InfoTag("DocumentInfo");
const QString InfoNameAttribute("ProjectName");
const QString SimulationOptionsTag("SimulationOptions");
const QString MaterialsTag("Materials");
} // namespace
......@@ -50,6 +52,17 @@ ProjectDocument::ProjectDocument(const QString& projectFileName)
, m_singleSampleMode(false)
, m_functionalities(All)
{
m_materials.addRefractiveMaterial("Default", 1e-3, 1e-5);
m_materials.addRefractiveMaterial("Vacuum", 0.0, 0.0);
m_materials.addRefractiveMaterial("Particle", 6e-4, 2e-8);
m_materials.addRefractiveMaterial("Substrate", 6e-6, 2e-8);
connect(&m_materials, &MaterialModel::materialAddedOrRemoved, this,
&ProjectDocument::onModelChanged, Qt::UniqueConnection);
connect(&m_materials, &MaterialModel::materialChanged, this, &ProjectDocument::onModelChanged,
Qt::UniqueConnection);
m_linkManager = std::make_unique<LinkInstrumentManager>(instrumentModel(), realDataModel());
setObjectName("ProjectDocument");
if (!projectFileName.isEmpty())
......@@ -123,9 +136,9 @@ SampleModel* ProjectDocument::sampleModel() const
return m_applicationModels.sampleModel();
}
MaterialModel* ProjectDocument::materialModel() const
MaterialModel* ProjectDocument::materialModel()
{
return m_applicationModels.materialModel();
return &m_materials;
}
RealDataModel* ProjectDocument::realDataModel() const
......@@ -326,6 +339,9 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device,
else if (reader.name() == SimulationOptionsTag) {
m_simulationOptionsItem.readContentFrom(&reader);
reader.skipCurrentElement();
} else if (reader.name() == MaterialsTag) {
m_materials.readContentFrom(&reader);
reader.skipCurrentElement();
} else
m_applicationModels.readFrom(&reader, &messageService);
}
......@@ -335,7 +351,7 @@ ProjectDocument::ReadResult ProjectDocument::readProject(QIODevice* device,
// initialize all items with materials to find the materials
for (auto multiLayerItem : m_applicationModels.sampleModel()->multiLayerItems())
for (auto itemWithMaterial : multiLayerItem->itemsWithMaterial())
itemWithMaterial->setMaterialModel(m_applicationModels.materialModel());
itemWithMaterial->setMaterialModel(materialModel());
if (reader.hasError()) {
QString message = QString("Format error '%1'").arg(reader.errorString());
......@@ -365,6 +381,10 @@ void ProjectDocument::writeTo(QIODevice* device)
m_simulationOptionsItem.writeContentTo(&writer);
writer.writeEndElement();
writer.writeStartElement(MaterialsTag);
m_materials.writeContentTo(&writer);
writer.writeEndElement();
m_applicationModels.writeTo(&writer);
writer.writeEndElement(); // BornAgain tag
......
......@@ -16,6 +16,7 @@
#define BORNAGAIN_GUI_MODEL_PROJECT_PROJECTDOCUMENT_H
#include "GUI/Model/Data/ApplicationModels.h"
#include "GUI/Model/Material/MaterialModel.h"
#include "GUI/Model/Session/SimulationOptionsItem.h"
#include <QObject>
#include <QVariant>
......@@ -30,7 +31,6 @@ class MaterialModel;
class RealDataModel;
class JobModel;
class LinkInstrumentManager;
class SimulationOptionsItem;
//! Project document class handles all data related to the opened project
//! (sample, jobModel, project specific windows settings)
......@@ -72,7 +72,7 @@ public:
InstrumentModel* instrumentModel() const;
SampleModel* sampleModel() const;
MaterialModel* materialModel() const;
MaterialModel* materialModel();
RealDataModel* realDataModel() const;
JobModel* jobModel() const;
SimulationOptionsItem* simulationOptionsItem();
......@@ -136,6 +136,7 @@ private:
bool m_singleSampleMode;
Functionalities m_functionalities;
SimulationOptionsItem m_simulationOptionsItem;
MaterialModel m_materials;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(ProjectDocument::Functionalities)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment