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

Provides notifications on various SessionModel changes. More...

Inheritance diagram for ModelView::ModelMapper:
[legend]
Collaboration diagram for ModelView::ModelMapper:
[legend]

Public Member Functions

 ModelMapper (const ModelMapper &other)=delete
 
 ModelMapper (SessionModel *model)
 
 ~ModelMapper ()
 
ModelMapperoperator= (const ModelMapper &other)=delete
 
void setActive (bool value)
 Sets activity flag to given value. Will disable all callbacks if false. More...
 
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 just before the reset of the root item. 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 right after the root item recreation. More...
 
void unsubscribe (Callbacks::slot_t client) override
 Removes given client from all subscriptions. More...
 

Private Member Functions

void callOnDataChange (SessionItem *item, int role)
 Notifies all callbacks subscribed to "item data is changed" event. More...
 
void callOnItemAboutToBeRemoved (SessionItem *parent, const TagRow &tagrow)
 
void callOnItemInserted (SessionItem *parent, const TagRow &tagrow)
 Notifies all callbacks subscribed to "item data is changed" event. More...
 
void callOnItemRemoved (SessionItem *parent, const TagRow &tagrow)
 
void callOnModelAboutToBeReset ()
 
void callOnModelDestroyed ()
 
void callOnModelReset ()
 

Private Attributes

std::unique_ptr< ModelMapperImpl > p_impl
 

Friends

class SessionItem
 
class SessionModel
 

Detailed Description

Provides notifications on various SessionModel changes.

Allows to subscribe to SessionModel's changes, and triggers notifications.

Definition at line 29 of file modelmapper.h.

Constructor & Destructor Documentation

◆ ModelMapper() [1/2]

ModelMapper::ModelMapper ( SessionModel model)

Definition at line 46 of file modelmapper.cpp.

46 : p_impl(std::make_unique<ModelMapperImpl>(model)) {}
std::unique_ptr< ModelMapperImpl > p_impl
Definition: modelmapper.h:61

◆ ~ModelMapper()

ModelMapper::~ModelMapper ( )
default

◆ ModelMapper() [2/2]

ModelView::ModelMapper::ModelMapper ( const ModelMapper other)
delete

Member Function Documentation

◆ callOnDataChange()

void ModelMapper::callOnDataChange ( SessionItem item,
int  role 
)
private

Notifies all callbacks subscribed to "item data is changed" event.

Definition at line 119 of file modelmapper.cpp.

120 {
121  if (p_impl->m_active)
122  p_impl->m_on_data_change(item, role);
123 }

References p_impl.

◆ callOnItemAboutToBeRemoved()

void ModelMapper::callOnItemAboutToBeRemoved ( SessionItem parent,
const TagRow tagrow 
)
private

Definition at line 139 of file modelmapper.cpp.

140 {
141  if (p_impl->m_active)
142  p_impl->m_on_item_about_removed(parent, tagrow);
143 }

References p_impl.

◆ callOnItemInserted()

void ModelMapper::callOnItemInserted ( SessionItem parent,
const TagRow tagrow 
)
private

Notifies all callbacks subscribed to "item data is changed" event.

Definition at line 127 of file modelmapper.cpp.

128 {
129  if (p_impl->m_active)
130  p_impl->m_on_item_inserted(parent, tagrow);
131 }

References p_impl.

◆ callOnItemRemoved()

void ModelMapper::callOnItemRemoved ( SessionItem parent,
const TagRow tagrow 
)
private

Definition at line 133 of file modelmapper.cpp.

134 {
135  if (p_impl->m_active)
136  p_impl->m_on_item_removed(parent, tagrow);
137 }

References p_impl.

◆ callOnModelAboutToBeReset()

void ModelMapper::callOnModelAboutToBeReset ( )
private

Definition at line 150 of file modelmapper.cpp.

151 {
152  p_impl->m_on_model_about_reset(p_impl->m_model);
153 }

References p_impl.

Referenced by ModelView::SessionModel::clear().

◆ callOnModelDestroyed()

void ModelMapper::callOnModelDestroyed ( )
private

Definition at line 145 of file modelmapper.cpp.

146 {
147  p_impl->m_on_model_destroyed(p_impl->m_model);
148 }

References p_impl.

◆ callOnModelReset()

void ModelMapper::callOnModelReset ( )
private

Definition at line 155 of file modelmapper.cpp.

156 {
157  p_impl->m_on_model_reset(p_impl->m_model);
158 }

References p_impl.

Referenced by ModelView::SessionModel::clear().

◆ operator=()

ModelMapper& ModelView::ModelMapper::operator= ( const ModelMapper other)
delete

◆ setActive()

void ModelMapper::setActive ( bool  value)

Sets activity flag to given value. Will disable all callbacks if false.

Definition at line 105 of file modelmapper.cpp.

106 {
107  p_impl->m_active = value;
108 }

References p_impl.

◆ setOnAboutToRemoveItem()

void ModelMapper::setOnAboutToRemoveItem ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  client 
)
overridevirtual

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 77 of file modelmapper.cpp.

78 {
79  p_impl->m_on_item_about_removed.connect(std::move(f), client);
80 }

References p_impl.

Referenced by MockWidgetForModel::setModel(), and ModelView::ModelListenerBase::setOnAboutToRemoveItem().

◆ setOnDataChange()

void ModelMapper::setOnDataChange ( Callbacks::item_int_t  f,
Callbacks::slot_t  client 
)
overridevirtual

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 53 of file modelmapper.cpp.

54 {
55  p_impl->m_on_data_change.connect(std::move(f), client);
56 }

References p_impl.

Referenced by gui2::SLDElementController::connectLayerModel(), gui2::SLDElementController::connectMaterialModel(), MockWidgetForModel::setModel(), and ModelView::ModelListenerBase::setOnDataChange().

◆ setOnItemInserted()

void ModelMapper::setOnItemInserted ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  client 
)
overridevirtual

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 61 of file modelmapper.cpp.

62 {
63  p_impl->m_on_item_inserted.connect(std::move(f), client);
64 }

References p_impl.

Referenced by gui2::SLDElementController::connectLayerModel(), MockWidgetForModel::setModel(), and ModelView::ModelListenerBase::setOnItemInserted().

◆ setOnItemRemoved()

void ModelMapper::setOnItemRemoved ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  client 
)
overridevirtual

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 69 of file modelmapper.cpp.

70 {
71  p_impl->m_on_item_removed.connect(std::move(f), client);
72 }

References p_impl.

Referenced by gui2::SLDElementController::connectLayerModel(), MockWidgetForModel::setModel(), and ModelView::ModelListenerBase::setOnItemRemoved().

◆ setOnModelAboutToBeReset()

void ModelMapper::setOnModelAboutToBeReset ( Callbacks::model_t  f,
Callbacks::slot_t  client 
)
overridevirtual

Sets the callback to be notified just before the reset of the root item.

Implements ModelView::ModelListenerInterface.

Definition at line 91 of file modelmapper.cpp.

92 {
93  p_impl->m_on_model_about_reset.connect(std::move(f), client);
94 }

References p_impl.

Referenced by MockWidgetForModel::setModel(), and ModelView::ModelListenerBase::setOnModelAboutToBeReset().

◆ setOnModelDestroyed()

void ModelMapper::setOnModelDestroyed ( Callbacks::model_t  f,
Callbacks::slot_t  client 
)
overridevirtual

Sets the callback for notifications on model destruction.

Implements ModelView::ModelListenerInterface.

Definition at line 84 of file modelmapper.cpp.

85 {
86  p_impl->m_on_model_destroyed.connect(std::move(f), client);
87 }

References p_impl.

Referenced by gui2::SLDElementController::connectLayerModel(), gui2::SLDElementController::connectMaterialModel(), gui2::SLDElementController::connectSLDElementModel(), MockWidgetForModel::setModel(), and ModelView::ModelListenerBase::setOnModelDestroyed().

◆ setOnModelReset()

void ModelMapper::setOnModelReset ( Callbacks::model_t  f,
Callbacks::slot_t  client 
)
overridevirtual

Sets the callback to be notified right after the root item recreation.

Implements ModelView::ModelListenerInterface.

Definition at line 98 of file modelmapper.cpp.

99 {
100  p_impl->m_on_model_reset.connect(std::move(f), client);
101 }

References p_impl.

Referenced by MockWidgetForModel::setModel(), and ModelView::ModelListenerBase::setOnModelReset().

◆ unsubscribe()

Friends And Related Function Documentation

◆ SessionItem

friend class SessionItem
friend

Definition at line 51 of file modelmapper.h.

◆ SessionModel

friend class SessionModel
friend

Definition at line 50 of file modelmapper.h.

Member Data Documentation

◆ p_impl


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