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

Listens for all changes in ExperimentalDataModel and updates properties in InstrumentModel. More...

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

Public Member Functions

 ExperimentalDataController (ExperimentalDataModel *data_model, InstrumentModel *instrument_model)
 
ExperimentalDataModelmodel () 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

InstrumentModelm_instrument_model {nullptr}
 

Detailed Description

Listens for all changes in ExperimentalDataModel and updates properties in InstrumentModel.

Main task is to update links of ExperimentalScanItem to particular imported graph, when ExperimentalDataModel is changing.

Definition at line 31 of file experimentaldatacontroller.h.

Constructor & Destructor Documentation

◆ ExperimentalDataController()

gui2::ExperimentalDataController::ExperimentalDataController ( ExperimentalDataModel data_model,
InstrumentModel instrument_model 
)

Definition at line 26 of file experimentaldatacontroller.cpp.

28  : ModelListener(data_model), m_instrument_model(instrument_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(ExperimentalDataModel *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()

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 ExperimentalDataController(), ModelView::ItemMapper::ItemMapper(), gui2::MaterialPropertyController::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 ExperimentalDataController(), ModelView::ItemMapper::ItemMapper(), gui2::MaterialPropertyController::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 ExperimentalDataController(), ModelView::ItemMapper::ItemMapper(), gui2::MaterialPropertyController::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 ExperimentalDataController(), gui2::MaterialPropertyController::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 gui2::ExperimentalDataController::update_all ( )
private

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

Definition at line 40 of file experimentaldatacontroller.cpp.

41 {
42  for (auto scan : ModelView::Utils::FindItems<ExperimentalScanItem>(m_instrument_model)) {
43  auto property =
45  auto updated =
46  Utils::FindProperty(Utils::CreateGraphProperties(model()), property.identifier());
47  if (property != updated)
48  scan->setProperty(ExperimentalScanItem::P_IMPORTED_DATA, updated);
49  }
50 }
Property to carry text, color and identifier.
static const std::string P_IMPORTED_DATA
DAREFLCORE_EXPORT ModelView::ExternalProperty FindProperty(const std::vector< ModelView::ExternalProperty > &properties, const std::string &id)
Finds the property with the same id in given vector and returns it.
Definition: modelutils.cpp:56
DAREFLCORE_EXPORT std::vector< ModelView::ExternalProperty > CreateGraphProperties(ExperimentalDataModel *model)
Returns vector of properties representing GraphItem content of the model.
Definition: modelutils.cpp:46

References gui2::Utils::CreateGraphProperties(), gui2::Utils::FindProperty(), m_instrument_model, ModelView::ModelListener< ExperimentalDataModel >::model(), and gui2::ExperimentalScanItem::P_IMPORTED_DATA.

Referenced by ExperimentalDataController().

Here is the call graph for this function:

Member Data Documentation

◆ m_instrument_model

InstrumentModel* gui2::ExperimentalDataController::m_instrument_model {nullptr}
private

Definition at line 40 of file experimentaldatacontroller.h.

Referenced by update_all().

◆ m_model


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