BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
gui2::ApplicationModels::ApplicationModelsImpl Struct Reference

Public Member Functions

 ApplicationModelsImpl ()
 
std::vector< SessionModel * > application_models () const
 All application models. More...
 
std::vector< SessionModel * > persistent_models () const
 Models intended for saving. More...
 
void update_material_properties ()
 Runs through all layers and assign materials. More...
 

Public Attributes

std::shared_ptr< ItemPoolitem_pool
 
std::unique_ptr< ExperimentalDataControllerm_data_controller
 
std::unique_ptr< ExperimentalDataModelm_experimental_model
 
std::unique_ptr< InstrumentModelm_instrument_model
 
std::unique_ptr< JobModelm_job_model
 
std::unique_ptr< MaterialPropertyControllerm_material_controller
 
std::unique_ptr< MaterialModelm_material_model
 
std::unique_ptr< SampleModelm_sample_model
 
std::unique_ptr< SLDElementModelm_sld_view_model
 

Detailed Description

Definition at line 34 of file applicationmodels.cpp.

Constructor & Destructor Documentation

◆ ApplicationModelsImpl()

gui2::ApplicationModels::ApplicationModelsImpl::ApplicationModelsImpl ( )
inline

Definition at line 45 of file applicationmodels.cpp.

46  {
47  item_pool = std::make_shared<ItemPool>();
48  m_material_model = std::make_unique<MaterialModel>(item_pool);
49  m_sample_model = std::make_unique<SampleModel>(item_pool);
50  m_sld_view_model = std::make_unique<SLDElementModel>();
51  m_job_model = std::make_unique<JobModel>(item_pool);
52  m_experimental_model = std::make_unique<ExperimentalDataModel>(item_pool);
53  m_instrument_model = std::make_unique<InstrumentModel>(item_pool);
54  m_material_controller = std::make_unique<MaterialPropertyController>(m_material_model.get(),
55  m_sample_model.get());
56  m_data_controller = std::make_unique<ExperimentalDataController>(m_experimental_model.get(),
57  m_instrument_model.get());
58  m_sample_model->create_default_multilayer();
60  }
std::unique_ptr< MaterialModel > m_material_model
std::unique_ptr< SLDElementModel > m_sld_view_model
std::unique_ptr< ExperimentalDataModel > m_experimental_model
std::unique_ptr< MaterialPropertyController > m_material_controller
std::unique_ptr< InstrumentModel > m_instrument_model
void update_material_properties()
Runs through all layers and assign materials.
std::unique_ptr< ExperimentalDataController > m_data_controller

Member Function Documentation

◆ application_models()

std::vector<SessionModel*> gui2::ApplicationModels::ApplicationModelsImpl::application_models ( ) const
inline

All application models.

Definition at line 85 of file applicationmodels.cpp.

86  {
87  return {m_material_model.get(), m_sample_model.get(), m_instrument_model.get(),
89  }

◆ persistent_models()

std::vector<SessionModel*> gui2::ApplicationModels::ApplicationModelsImpl::persistent_models ( ) const
inline

Models intended for saving.

Definition at line 78 of file applicationmodels.cpp.

79  {
80  return {m_material_model.get(), m_sample_model.get(), m_instrument_model.get(),
81  m_experimental_model.get()};
82  }

◆ update_material_properties()

void gui2::ApplicationModels::ApplicationModelsImpl::update_material_properties ( )
inline

Runs through all layers and assign materials.

Expecting 3 materials existing by default (air, default, Si) to assign to our 3 layers.

Definition at line 65 of file applicationmodels.cpp.

66  {
67  auto multilayer = Utils::TopItem<MultiLayerItem>(m_sample_model.get());
68  auto layers = multilayer->items<LayerItem>(MultiLayerItem::T_LAYERS);
69  size_t index(0);
70  for (const auto& material_property : m_material_model->material_data()) {
71  if (index < layers.size())
72  layers[index]->setProperty(LayerItem::P_MATERIAL, material_property);
73  ++index;
74  }
75  }
static const std::string P_MATERIAL
Definition: sampleitems.h:42
static const std::string T_LAYERS
Definition: sampleitems.h:54

References gui2::LayerItem::P_MATERIAL, and gui2::MultiLayerItem::T_LAYERS.

Member Data Documentation

◆ item_pool

std::shared_ptr<ItemPool> gui2::ApplicationModels::ApplicationModelsImpl::item_pool

Definition at line 43 of file applicationmodels.cpp.

◆ m_data_controller

std::unique_ptr<ExperimentalDataController> gui2::ApplicationModels::ApplicationModelsImpl::m_data_controller

Definition at line 42 of file applicationmodels.cpp.

◆ m_experimental_model

std::unique_ptr<ExperimentalDataModel> gui2::ApplicationModels::ApplicationModelsImpl::m_experimental_model

Definition at line 39 of file applicationmodels.cpp.

◆ m_instrument_model

std::unique_ptr<InstrumentModel> gui2::ApplicationModels::ApplicationModelsImpl::m_instrument_model

Definition at line 40 of file applicationmodels.cpp.

◆ m_job_model

std::unique_ptr<JobModel> gui2::ApplicationModels::ApplicationModelsImpl::m_job_model

Definition at line 38 of file applicationmodels.cpp.

◆ m_material_controller

std::unique_ptr<MaterialPropertyController> gui2::ApplicationModels::ApplicationModelsImpl::m_material_controller

Definition at line 41 of file applicationmodels.cpp.

◆ m_material_model

std::unique_ptr<MaterialModel> gui2::ApplicationModels::ApplicationModelsImpl::m_material_model

Definition at line 35 of file applicationmodels.cpp.

◆ m_sample_model

std::unique_ptr<SampleModel> gui2::ApplicationModels::ApplicationModelsImpl::m_sample_model

Definition at line 36 of file applicationmodels.cpp.

◆ m_sld_view_model

std::unique_ptr<SLDElementModel> gui2::ApplicationModels::ApplicationModelsImpl::m_sld_view_model

Definition at line 37 of file applicationmodels.cpp.


The documentation for this struct was generated from the following file: