BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ApplicationModels Class Reference
Inheritance diagram for ApplicationModels:
[legend]
Collaboration diagram for ApplicationModels:
[legend]

Signals

void modelChanged ()
 

Public Member Functions

 ApplicationModels (QObject *parent=nullptr)
 
 ~ApplicationModels ()
 
DocumentModeldocumentModel ()
 
InstrumentModelinstrumentModel ()
 
JobModeljobModel ()
 
MaterialModelmaterialModel ()
 
QList< SessionModel * > modelList ()
 Returns the list of all GUI models. More...
 
QVector< SessionItem * > nonXMLItems () const
 Returns all non-XML items. More...
 
void readFrom (class QXmlStreamReader *reader, MessageService *messageService)
 
RealDataModelrealDataModel ()
 
void resetModels ()
 reset all models to initial state More...
 
SampleModelsampleModel ()
 
void writeTo (class QXmlStreamWriter *writer)
 Writes all model in file one by one. More...
 

Private Member Functions

void connectModel (SessionModel *model)
 

Private Attributes

DocumentModelm_documentModel
 
InstrumentModelm_instrumentModel
 
JobModelm_jobModel
 
MaterialModelm_materialModel
 
MaterialPropertyControllerm_materialPropertyController
 
RealDataModelm_realDataModel
 
SampleModelm_sampleModel
 

Detailed Description

Definition at line 31 of file ApplicationModels.h.

Constructor & Destructor Documentation

◆ ApplicationModels()

ApplicationModels::ApplicationModels ( QObject *  parent = nullptr)
explicit

Definition at line 39 of file ApplicationModels.cpp.

40  : QObject(parent)
41  , m_documentModel(nullptr)
42  , m_materialModel(nullptr)
43  , m_instrumentModel(nullptr)
44  , m_sampleModel(nullptr)
45  , m_realDataModel(nullptr)
46  , m_jobModel(nullptr)
48 {
49  //! creates and initializes models, order is important
50  m_documentModel = new DocumentModel(this);
51  m_materialModel = new MaterialModel(this);
52  m_sampleModel = new SampleModel(this);
54  m_realDataModel = new RealDataModel(this);
55  m_jobModel = new JobModel(this);
56 
58 
65 
66  resetModels();
67 
69 }
SampleModel * sampleModel()
MaterialPropertyController * m_materialPropertyController
SampleModel * m_sampleModel
MaterialModel * materialModel()
void connectModel(SessionModel *model)
MaterialModel * m_materialModel
RealDataModel * m_realDataModel
DocumentModel * m_documentModel
void resetModels()
reset all models to initial state
InstrumentModel * m_instrumentModel
The DocumentModel class is a model with GUI settings related to the opened project.
Definition: DocumentModel.h:25
Listens MaterialModel for changes in MaterialItems and then updates MaterialProperties in all related...
void setModels(MaterialModel *materialModel, SampleModel *sampleModel)
The RealDataModel class is a model to store all imported RealDataItem's.
Definition: RealDataModel.h:26
void setInstrumentModel(InstrumentModel *instrumentModel)
Main model to hold sample items.
Definition: SampleModel.h:24

References connectModel(), m_documentModel, m_instrumentModel, m_jobModel, m_materialModel, m_materialPropertyController, m_realDataModel, m_sampleModel, materialModel(), resetModels(), sampleModel(), RealDataModel::setInstrumentModel(), and MaterialPropertyController::setModels().

Here is the call graph for this function:

◆ ~ApplicationModels()

ApplicationModels::~ApplicationModels ( )
default

Member Function Documentation

◆ connectModel()

void ApplicationModels::connectModel ( SessionModel model)
private

Definition at line 173 of file ApplicationModels.cpp.

174 {
175  if (model) {
176  connect(model, &SessionModel::dataChanged, this, &ApplicationModels::modelChanged,
177  Qt::UniqueConnection);
178  connect(model, &SessionModel::rowsRemoved, this, &ApplicationModels::modelChanged,
179  Qt::UniqueConnection);
180  connect(model, &SessionModel::rowsInserted, this, &ApplicationModels::modelChanged,
181  Qt::UniqueConnection);
182  }
183 }

References modelChanged().

Referenced by ApplicationModels().

◆ documentModel()

DocumentModel * ApplicationModels::documentModel ( )

◆ instrumentModel()

◆ jobModel()

JobModel * ApplicationModels::jobModel ( )

Definition at line 98 of file ApplicationModels.cpp.

99 {
100  return m_jobModel;
101 }

References m_jobModel.

Referenced by MainWindow::jobModel(), and SimulationSetupWidget::onRunSimulation().

◆ materialModel()

MaterialModel * ApplicationModels::materialModel ( )

Definition at line 78 of file ApplicationModels.cpp.

79 {
80  return m_materialModel;
81 }

References m_materialModel.

Referenced by ApplicationModels(), MainWindow::materialModel(), and SampleDesigner::setModels().

◆ modelChanged

void ApplicationModels::modelChanged ( )
signal

◆ modelList()

QList< SessionModel * > ApplicationModels::modelList ( )

Returns the list of all GUI models.

Definition at line 154 of file ApplicationModels.cpp.

155 {
156  QList<SessionModel*> result;
157  result.append(m_documentModel);
158  result.append(m_materialModel);
159  result.append(m_instrumentModel);
160  result.append(m_sampleModel);
161  result.append(m_realDataModel);
162  result.append(m_jobModel);
163  return result;
164 }

References m_documentModel, m_instrumentModel, m_jobModel, m_materialModel, m_realDataModel, and m_sampleModel.

Referenced by readFrom(), and writeTo().

◆ nonXMLItems()

QVector< SessionItem * > ApplicationModels::nonXMLItems ( ) const

Returns all non-XML items.

Definition at line 166 of file ApplicationModels.cpp.

167 {
169  return QVector<SessionItem*>() << m_realDataModel->nonXMLItems() << m_jobModel->nonXMLItems()
171 }
#define ASSERT(condition)
Definition: Assert.h:31
QVector< SessionItem * > nonXMLItems() const override
QVector< SessionItem * > nonXMLItems() const override
Definition: JobModel.cpp:135
virtual QVector< SessionItem * > nonXMLItems() const override

References ASSERT, m_instrumentModel, m_jobModel, m_realDataModel, InstrumentModel::nonXMLItems(), JobModel::nonXMLItems(), and RealDataModel::nonXMLItems().

Referenced by OutputDataIOService::nonXMLItems().

Here is the call graph for this function:

◆ readFrom()

void ApplicationModels::readFrom ( class QXmlStreamReader *  reader,
MessageService messageService 
)

Definition at line 134 of file ApplicationModels.cpp.

135 {
136  try {
137 
138  for (auto model : modelList()) {
139  if (model->getModelTag() == reader->name()) {
140  model->readFrom(reader, messageService);
141  break;
142  }
143  }
144  } catch (DeserializationException& ex) {
145  resetModels();
146  reader->raiseError(ex.text());
147  }
148 
150 }
QList< SessionModel * > modelList()
Returns the list of all GUI models.
void onMaterialModelLoad()
Special case when original MaterialModel was fully rebuild from MaterialEditor.

References m_materialPropertyController, modelList(), MaterialPropertyController::onMaterialModelLoad(), resetModels(), and DeserializationException::text().

Referenced by ProjectDocument::readFrom().

Here is the call graph for this function:

◆ realDataModel()

RealDataModel * ApplicationModels::realDataModel ( )

◆ resetModels()

void ApplicationModels::resetModels ( )

reset all models to initial state

Definition at line 104 of file ApplicationModels.cpp.

105 {
108 
110  m_materialModel->addRefractiveMaterial("Default", 1e-3, 1e-5);
111  m_materialModel->addRefractiveMaterial("Vacuum", 0.0, 0.0);
112  m_materialModel->addRefractiveMaterial("Particle", 6e-4, 2e-8);
113  m_materialModel->addRefractiveMaterial("Substrate", 6e-6, 2e-8);
114 
115  m_sampleModel->clear();
116 
118 
119  m_jobModel->clear();
120 
122  auto instrument = m_instrumentModel->insertItem<GISASInstrumentItem>();
123  instrument->setItemName("GISAS");
124 }
void clear() override
Definition: JobModel.cpp:127
MaterialItem * addRefractiveMaterial(const QString &name, double delta, double beta)
void setItemName(const QString &name)
Set item name, add property if necessary.
virtual void clear()
T * insertItem(SessionItem *parent=nullptr, int row=-1, QString tag="")
Definition: SessionModel.h:125
The SimulationOptionsItem class holds simulation status (run policy, number of threads,...

References MaterialModel::addRefractiveMaterial(), SessionModel::clear(), JobModel::clear(), SessionModel::insertItem(), m_documentModel, m_instrumentModel, m_jobModel, m_materialModel, m_realDataModel, m_sampleModel, and SessionItem::setItemName().

Referenced by ApplicationModels(), ProjectManager::deleteCurrentProject(), and readFrom().

Here is the call graph for this function:

◆ sampleModel()

◆ writeTo()

void ApplicationModels::writeTo ( class QXmlStreamWriter *  writer)

Writes all model in file one by one.

Definition at line 128 of file ApplicationModels.cpp.

129 {
130  for (auto model : modelList())
131  model->writeTo(writer);
132 }

References modelList().

Referenced by ProjectDocument::writeTo().

Here is the call graph for this function:

Member Data Documentation

◆ m_documentModel

DocumentModel* ApplicationModels::m_documentModel
private

Definition at line 60 of file ApplicationModels.h.

Referenced by ApplicationModels(), documentModel(), modelList(), and resetModels().

◆ m_instrumentModel

InstrumentModel* ApplicationModels::m_instrumentModel
private

◆ m_jobModel

JobModel* ApplicationModels::m_jobModel
private

Definition at line 65 of file ApplicationModels.h.

Referenced by ApplicationModels(), jobModel(), modelList(), nonXMLItems(), and resetModels().

◆ m_materialModel

MaterialModel* ApplicationModels::m_materialModel
private

Definition at line 61 of file ApplicationModels.h.

Referenced by ApplicationModels(), materialModel(), modelList(), and resetModels().

◆ m_materialPropertyController

MaterialPropertyController* ApplicationModels::m_materialPropertyController
private

Definition at line 66 of file ApplicationModels.h.

Referenced by ApplicationModels(), and readFrom().

◆ m_realDataModel

RealDataModel* ApplicationModels::m_realDataModel
private

◆ m_sampleModel

SampleModel* ApplicationModels::m_sampleModel
private

Definition at line 63 of file ApplicationModels.h.

Referenced by ApplicationModels(), modelList(), resetModels(), and sampleModel().


The documentation for this class was generated from the following files: