BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
gui2::MaterialPropertyController Class Reference

Listens for all changes in material model and updates properties in SampleModel. More...

Inheritance diagram for gui2::MaterialPropertyController:
[legend]
Collaboration diagram for gui2::MaterialPropertyController:
[legend]

Public Member Functions

 MaterialPropertyController (MaterialModel *material_model, SampleModel *sample_model)
 
MaterialModelmodel () const
 
void setOnAboutToRemoveItem (Callbacks::item_tagrow_t f, Callbacks::slot_t client={}) override
 Sets callback to be notified when the item is about to be removed. More...
 
void setOnDataChange (Callbacks::item_int_t f, Callbacks::slot_t client={}) override
 Sets callback to be notified on item's data change. More...
 
void setOnItemInserted (Callbacks::item_tagrow_t f, Callbacks::slot_t client={}) override
 Sets callback to be notified on item insert. More...
 
void setOnItemRemoved (Callbacks::item_tagrow_t f, Callbacks::slot_t client={}) override
 Sets callback to be notified on item remove. More...
 
void setOnModelAboutToBeReset (Callbacks::model_t f, Callbacks::slot_t client={}) override
 Sets the callback to be notified before model's full reset (root item recreated). More...
 
void setOnModelDestroyed (Callbacks::model_t f, Callbacks::slot_t client={}) override
 Sets the callback for notifications on model destruction. More...
 
void setOnModelReset (Callbacks::model_t f, Callbacks::slot_t client={}) override
 Sets the callback to be notified after model was fully reset (root item recreated). More...
 
void unsubscribe (Callbacks::slot_t client={}) override
 Removes given client from all subscriptions. More...
 

Protected Attributes

SessionModelm_model {nullptr}
 

Private Member Functions

void update_all ()
 Updates all material properties in LayerItems to get new material colors and labels. More...
 

Private Attributes

SampleModelm_sample_model {nullptr}
 

Detailed Description

Listens for all changes in material model and updates properties in SampleModel.

Definition at line 28 of file materialpropertycontroller.h.

Constructor & Destructor Documentation

◆ MaterialPropertyController()

MaterialPropertyController::MaterialPropertyController ( MaterialModel material_model,
SampleModel sample_model 
)

Definition at line 26 of file materialpropertycontroller.cpp.

28  : ModelListener(material_model), m_sample_model(sample_model)
29 {
30  setOnDataChange([this](auto, auto) { update_all(); });
31  setOnItemInserted([this](auto, auto) { update_all(); });
32  setOnItemRemoved([this](auto, auto) { update_all(); });
33  setOnModelReset([this](auto) { update_all(); });
34 
35  update_all();
36 }
void setOnItemRemoved(Callbacks::item_tagrow_t f, Callbacks::slot_t client={}) override
Sets callback to be notified on item remove.
void setOnItemInserted(Callbacks::item_tagrow_t f, Callbacks::slot_t client={}) override
Sets callback to be notified on item insert.
void setOnDataChange(Callbacks::item_int_t f, Callbacks::slot_t client={}) override
Sets callback to be notified on item's data change.
void setOnModelReset(Callbacks::model_t f, Callbacks::slot_t client={}) override
Sets the callback to be notified after model was fully reset (root item recreated).
ModelListener(MaterialModel *session_model)
Definition: modellistener.h:28
void update_all()
Updates all material properties in LayerItems to get new material colors and labels.

References ModelView::ModelListenerBase::setOnDataChange(), ModelView::ModelListenerBase::setOnItemInserted(), ModelView::ModelListenerBase::setOnItemRemoved(), ModelView::ModelListenerBase::setOnModelReset(), and update_all().

Here is the call graph for this function:

Member Function Documentation

◆ model()

MaterialModel * ModelView::ModelListener< MaterialModel >::model ( ) const
inlineinherited

Definition at line 30 of file modellistener.h.

30 { return static_cast<T*>(m_model); }

◆ setOnAboutToRemoveItem()

void ModelListenerBase::setOnAboutToRemoveItem ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  client = {} 
)
overridevirtualinherited

Sets callback to be notified when the item is about to be removed.

The callback will be called with (SessionItem* parent, tagrow), where 'tagrow' denotes child position being removed.

Implements ModelView::ModelListenerInterface.

Definition at line 61 of file modellistenerbase.cpp.

63 {
65 }
void setOnAboutToRemoveItem(Callbacks::item_tagrow_t f, Callbacks::slot_t client) override
Sets callback to be notified when the item is about to be removed.
Definition: modelmapper.cpp:77
ModelMapper * mapper()
Returns model mapper. Can be used to subscribe to various model's signal.

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::setOnAboutToRemoveItem().

Referenced by ModelView::ItemMapper::ItemMapper(), and ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ setOnDataChange()

void ModelListenerBase::setOnDataChange ( Callbacks::item_int_t  f,
Callbacks::slot_t  client = {} 
)
overridevirtualinherited

Sets callback to be notified on item's data change.

The callback will be called with (SessionItem*, data_role).

Implements ModelView::ModelListenerInterface.

Definition at line 37 of file modellistenerbase.cpp.

38 {
39  m_model->mapper()->setOnDataChange(f, this);
40 }
void setOnDataChange(Callbacks::item_int_t f, Callbacks::slot_t client) override
Sets callback to be notified on item's data change.
Definition: modelmapper.cpp:53

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::setOnDataChange().

Referenced by gui2::ExperimentalDataController::ExperimentalDataController(), ModelView::ItemMapper::ItemMapper(), MaterialPropertyController(), ModelView::ModelHasChangedController::ModelHasChangedController(), and ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ setOnItemInserted()

void ModelListenerBase::setOnItemInserted ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  client = {} 
)
overridevirtualinherited

Sets callback to be notified on item insert.

The callback will be called with (SessionItem* parent, tagrow), where 'tagrow' denotes inserted child position.

Implements ModelView::ModelListenerInterface.

Definition at line 45 of file modellistenerbase.cpp.

46 {
47  m_model->mapper()->setOnItemInserted(f, this);
48 }
void setOnItemInserted(Callbacks::item_tagrow_t f, Callbacks::slot_t client) override
Sets callback to be notified on item insert.
Definition: modelmapper.cpp:61

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::setOnItemInserted().

Referenced by gui2::ExperimentalDataController::ExperimentalDataController(), ModelView::ItemMapper::ItemMapper(), MaterialPropertyController(), ModelView::ModelHasChangedController::ModelHasChangedController(), and ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ setOnItemRemoved()

void ModelListenerBase::setOnItemRemoved ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  client = {} 
)
overridevirtualinherited

Sets callback to be notified on item remove.

The callback will be called with (SessionItem* parent, tagrow), where 'tagrow' denotes child position before the removal.

Implements ModelView::ModelListenerInterface.

Definition at line 53 of file modellistenerbase.cpp.

54 {
55  m_model->mapper()->setOnItemRemoved(f, this);
56 }
void setOnItemRemoved(Callbacks::item_tagrow_t f, Callbacks::slot_t client) override
Sets callback to be notified on item remove.
Definition: modelmapper.cpp:69

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::setOnItemRemoved().

Referenced by gui2::ExperimentalDataController::ExperimentalDataController(), ModelView::ItemMapper::ItemMapper(), MaterialPropertyController(), ModelView::ModelHasChangedController::ModelHasChangedController(), and ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ setOnModelAboutToBeReset()

void ModelListenerBase::setOnModelAboutToBeReset ( Callbacks::model_t  f,
Callbacks::slot_t  client = {} 
)
overridevirtualinherited

Sets the callback to be notified before model's full reset (root item recreated).

Implements ModelView::ModelListenerInterface.

Definition at line 76 of file modellistenerbase.cpp.

77 {
79 }
void setOnModelAboutToBeReset(Callbacks::model_t f, Callbacks::slot_t client) override
Sets the callback to be notified just before the reset of the root item.
Definition: modelmapper.cpp:91

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::setOnModelAboutToBeReset().

Referenced by ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ setOnModelDestroyed()

void ModelListenerBase::setOnModelDestroyed ( Callbacks::model_t  f,
Callbacks::slot_t  client = {} 
)
overridevirtualinherited

Sets the callback for notifications on model destruction.

Implements ModelView::ModelListenerInterface.

Definition at line 69 of file modellistenerbase.cpp.

70 {
71  m_model->mapper()->setOnModelDestroyed(f, this);
72 }
void setOnModelDestroyed(Callbacks::model_t f, Callbacks::slot_t client) override
Sets the callback for notifications on model destruction.
Definition: modelmapper.cpp:84

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::setOnModelDestroyed().

Referenced by ModelView::ModelListenerBase::ModelListenerBase(), and ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ setOnModelReset()

void ModelListenerBase::setOnModelReset ( Callbacks::model_t  f,
Callbacks::slot_t  client = {} 
)
overridevirtualinherited

Sets the callback to be notified after model was fully reset (root item recreated).

Implements ModelView::ModelListenerInterface.

Definition at line 83 of file modellistenerbase.cpp.

84 {
85  m_model->mapper()->setOnModelReset(f, this);
86 }
void setOnModelReset(Callbacks::model_t f, Callbacks::slot_t client) override
Sets the callback to be notified right after the root item recreation.
Definition: modelmapper.cpp:98

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::setOnModelReset().

Referenced by gui2::ExperimentalDataController::ExperimentalDataController(), MaterialPropertyController(), ModelView::ModelHasChangedController::ModelHasChangedController(), and ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ unsubscribe()

void ModelListenerBase::unsubscribe ( Callbacks::slot_t  client = {})
overridevirtualinherited

Removes given client from all subscriptions.

Implements ModelView::ModelListenerInterface.

Definition at line 88 of file modellistenerbase.cpp.

89 {
90  if (m_model)
91  m_model->mapper()->unsubscribe(this);
92 }
void unsubscribe(Callbacks::slot_t client) override
Removes given client from all subscriptions.

References ModelView::ModelListenerBase::m_model, ModelView::SessionModel::mapper(), and ModelView::ModelMapper::unsubscribe().

Referenced by ModelView::ModelListenerBase::~ModelListenerBase().

Here is the call graph for this function:

◆ update_all()

void MaterialPropertyController::update_all ( )
private

Updates all material properties in LayerItems to get new material colors and labels.

Definition at line 40 of file materialpropertycontroller.cpp.

41 {
42  for (auto layer : Utils::FindItems<LayerItem>(m_sample_model)) {
43  auto property = layer->property<ExternalProperty>(LayerItem::P_MATERIAL);
44  auto updated = model()->material_property(property.identifier());
45  if (property != updated)
46  layer->setProperty(LayerItem::P_MATERIAL, updated);
47  }
48 }
Property to carry text, color and identifier.
static const std::string P_MATERIAL
Definition: sampleitems.h:42

References m_sample_model, ModelView::ModelListener< MaterialModel >::model(), and gui2::LayerItem::P_MATERIAL.

Referenced by MaterialPropertyController().

Here is the call graph for this function:

Member Data Documentation

◆ m_model

◆ m_sample_model

SampleModel* gui2::MaterialPropertyController::m_sample_model {nullptr}
private

Definition at line 36 of file materialpropertycontroller.h.

Referenced by update_all().


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