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

Provides notifications on various changes for a specific item. More...

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

Classes

struct  ItemMapperImpl
 

Public Member Functions

 ItemMapper (SessionItem *item)
 
 ~ItemMapper ()
 
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 owner) override
 Sets callback to be notified when row is about to be removed. More...
 
void setOnChildPropertyChange (Callbacks::item_str_t f, Callbacks::slot_t owner) override
 Sets callback to be notified on item's children property change. More...
 
void setOnDataChange (Callbacks::item_int_t f, Callbacks::slot_t owner) override
 Sets callback to be notified on item's data change. More...
 
void setOnItemDestroy (Callbacks::item_t f, Callbacks::slot_t owner) override
 
void setOnItemInserted (Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
 Sets callback to be notified on child insertion. More...
 
void setOnItemRemoved (Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
 Sets callback to be notified on child removal. More...
 
void setOnPropertyChange (Callbacks::item_str_t f, Callbacks::slot_t owner) override
 Sets callback to be notified on item's property change. More...
 
void unsubscribe (Callbacks::slot_t client) override
 Removes given client from all subscriptions. More...
 

Private Member Functions

void callOnItemDestroy ()
 Calls all callbacks subscribed to "item is destroyed" event. More...
 
SessionModelmodel () const
 
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...
 

Private Attributes

SessionModelm_model {nullptr}
 
std::unique_ptr< ItemMapperImplp_impl
 

Friends

class SessionItem
 

Detailed Description

Provides notifications on various changes for a specific item.

ItemMapper listens signals coming from the model (i.e. via ModelMapper) and processes only whose signals which are related to the given item. Notifies all interested subscribers about things going with the item and its relatives.

Definition at line 31 of file itemmapper.h.

Constructor & Destructor Documentation

◆ ItemMapper()

ItemMapper::ItemMapper ( SessionItem item)

Definition at line 147 of file itemmapper.cpp.

148  : ModelListener(item->model()), p_impl(std::make_unique<ItemMapperImpl>(this))
149 {
150  if (!item)
151  throw std::runtime_error("ItemMapper::ItemMapper() -> Not initialized item");
152 
153  if (!item->model())
154  throw std::runtime_error("ItemMapper::ItemMapper() -> Item doesn't have model");
155 
156  p_impl->m_item = item;
157 
158  auto on_data_change = [this](auto item, auto role) { p_impl->processDataChange(item, role); };
159  ModelListener::setOnDataChange(on_data_change);
160 
161  auto on_item_inserted = [this](auto item, auto tagrow) {
162  p_impl->processItemInserted(item, tagrow);
163  };
164  ModelListener::setOnItemInserted(on_item_inserted, this);
165 
166  auto on_item_removed = [this](auto item, auto tagrow) {
167  p_impl->processItemRemoved(item, tagrow);
168  };
169  ModelListener::setOnItemRemoved(on_item_removed, this);
170 
171  auto on_about_to_remove_item = [this](auto item, auto tagrow) {
172  p_impl->processAboutToRemoveItem(item, tagrow);
173  };
174  ModelListener::setOnAboutToRemoveItem(on_about_to_remove_item, this);
175 }
std::unique_ptr< ItemMapperImpl > p_impl
Definition: itemmapper.h:53
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 setOnAboutToRemoveItem(Callbacks::item_tagrow_t f, Callbacks::slot_t client={}) override
Sets callback to be notified when the item is about to be removed.
void setOnDataChange(Callbacks::item_int_t f, Callbacks::slot_t client={}) override
Sets callback to be notified on item's data change.
ModelListener(SessionModel *session_model)
Definition: modellistener.h:28
SessionModel * model() const
Returns the model to which given item belongs to.

References ModelView::SessionItem::model(), p_impl, ModelView::ModelListenerBase::setOnAboutToRemoveItem(), ModelView::ModelListenerBase::setOnDataChange(), ModelView::ModelListenerBase::setOnItemInserted(), and ModelView::ModelListenerBase::setOnItemRemoved().

Here is the call graph for this function:

◆ ~ItemMapper()

ItemMapper::~ItemMapper ( )
default

Member Function Documentation

◆ callOnItemDestroy()

void ItemMapper::callOnItemDestroy ( )
private

Calls all callbacks subscribed to "item is destroyed" event.

Definition at line 228 of file itemmapper.cpp.

229 {
230  if (p_impl->m_active)
231  p_impl->m_on_item_destroy(p_impl->m_item);
232 }

References p_impl.

◆ model()

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

Definition at line 30 of file modellistener.h.

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

◆ setActive()

void ItemMapper::setActive ( bool  value)

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

Definition at line 221 of file itemmapper.cpp.

222 {
223  p_impl->m_active = value;
224 }

References p_impl.

◆ setOnAboutToRemoveItem()

void ItemMapper::setOnAboutToRemoveItem ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  owner 
)
overridevirtual

Sets callback to be notified when row is about to be removed.

Callback will be called with (compound_item, tagrow). For MultiLayer containing the T_LAYERS tag, the signal will be triggered on layer deletion with (multilayer*, {T_LAYER, row}) as callback parameters.

Implements ModelView::ItemListenerInterface.

Definition at line 209 of file itemmapper.cpp.

210 {
211  p_impl->m_on_about_to_remove_item.connect(std::move(f), owner);
212 }

References p_impl.

Referenced by MockWidgetForItem::setItem().

◆ setOnChildPropertyChange()

void ItemMapper::setOnChildPropertyChange ( Callbacks::item_str_t  f,
Callbacks::slot_t  owner 
)
overridevirtual

Sets callback to be notified on item's children property change.

Callback will be called with (compound_item, property_name). For MultiLayer containing the layer with "thickness" property, the signal will be triggered on thickness change using (layeritem*, "thickness") as callback parameters.

Implements ModelView::ItemListenerInterface.

Definition at line 194 of file itemmapper.cpp.

195 {
196  p_impl->m_on_child_property_change.connect(std::move(f), owner);
197 }

References p_impl.

Referenced by MockWidgetForItem::setItem().

◆ setOnDataChange()

void ItemMapper::setOnDataChange ( Callbacks::item_int_t  f,
Callbacks::slot_t  owner 
)
overridevirtual

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

Callback will be called with (SessionItem*, data_role).

Implements ModelView::ItemListenerInterface.

Definition at line 184 of file itemmapper.cpp.

185 {
186  p_impl->m_on_data_change.connect(std::move(f), owner);
187 }

References p_impl.

Referenced by MockWidgetForItem::setItem().

◆ setOnItemDestroy()

void ItemMapper::setOnItemDestroy ( Callbacks::item_t  f,
Callbacks::slot_t  owner 
)
overridevirtual

Implements ModelView::ItemListenerInterface.

Definition at line 179 of file itemmapper.cpp.

180 {
181  p_impl->m_on_item_destroy.connect(std::move(f), owner);
182 }

References p_impl.

Referenced by MockWidgetForItem::setItem().

◆ setOnItemInserted()

void ItemMapper::setOnItemInserted ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  owner 
)
overridevirtual

Sets callback to be notified on child insertion.

Callback will be called with (compound_item, tag, row). For MultiLayer containing the T_LAYERS tag, the signal will be triggered on layer insertion with (multilayer*, {T_LAYER, row}) as callback parameters.

Implements ModelView::ItemListenerInterface.

Definition at line 199 of file itemmapper.cpp.

200 {
201  p_impl->m_on_item_inserted.connect(std::move(f), owner);
202 }

References p_impl.

Referenced by gui2::MultiLayerItem::activate(), and MockWidgetForItem::setItem().

◆ setOnItemRemoved()

void ItemMapper::setOnItemRemoved ( Callbacks::item_tagrow_t  f,
Callbacks::slot_t  owner 
)
overridevirtual

Sets callback to be notified on child removal.

Callback will be called with (compound_item, tag, row). For MultiLayer containing the T_LAYERS tag, the signal will be triggered on layer removal with (multilayer*, {T_LAYER, oldrow}) as callback parameters.

Implements ModelView::ItemListenerInterface.

Definition at line 204 of file itemmapper.cpp.

205 {
206  p_impl->m_on_item_removed.connect(std::move(f), owner);
207 }

References p_impl.

Referenced by gui2::MultiLayerItem::activate(), and MockWidgetForItem::setItem().

◆ 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
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::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(), gui2::MaterialPropertyController::MaterialPropertyController(), ModelView::ModelHasChangedController::ModelHasChangedController(), and ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ setOnPropertyChange()

void ItemMapper::setOnPropertyChange ( Callbacks::item_str_t  f,
Callbacks::slot_t  owner 
)
overridevirtual

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

Callback will be called with (compound_item, property_name).

Implements ModelView::ItemListenerInterface.

Definition at line 189 of file itemmapper.cpp.

190 {
191  p_impl->m_on_property_change.connect(std::move(f), owner);
192 }

References p_impl.

Referenced by ModelView::VectorItem::activate(), ToyItems::LatticeItem::activate(), gui2::LayerElementController::connectToModel(), and MockWidgetForItem::setItem().

◆ unsubscribe()

void ItemMapper::unsubscribe ( Callbacks::slot_t  client)
overridevirtual

Removes given client from all subscriptions.

Implements ModelView::ItemListenerInterface.

Definition at line 214 of file itemmapper.cpp.

215 {
216  p_impl->unsubscribe(client);
217 }

References p_impl.

Referenced by MockWidgetForItem::~MockWidgetForItem(), gui2::LayerElementController::disconnectFormModel(), and MockWidgetForItem::setItem().

Friends And Related Function Documentation

◆ SessionItem

friend class SessionItem
friend

Definition at line 50 of file itemmapper.h.

Member Data Documentation

◆ m_model

◆ p_impl


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