BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ModelView::ItemMapper::ItemMapperImpl Struct Reference
Collaboration diagram for ModelView::ItemMapper::ItemMapperImpl:
[legend]

Public Member Functions

 ItemMapperImpl (ItemMapper *item_mapper)
 
void callOnAboutToRemoveItem (SessionItem *parent, const TagRow &tagrow)
 Notifies all callbacks subscribed to "on row about to be removed". More...
 
void callOnChildPropertyChange (SessionItem *item, const std::string &property_name)
 Notifies all callbacks subscribed to "child property changed" event. More...
 
void callOnDataChange (SessionItem *item, int role)
 Notifies all callbacks subscribed to "item data is changed" event. More...
 
void callOnItemInserted (SessionItem *parent, const TagRow &tagrow)
 Notifies all callbacks subscribed to "on row inserted" event. More...
 
void callOnItemRemoved (SessionItem *parent, const TagRow &tagrow)
 Notifies all callbacks subscribed to "on row removed" event. More...
 
void callOnPropertyChange (SessionItem *item, const std::string &property_name)
 Notifies all callbacks subscribed to "item property is changed" event. More...
 
int nestlingDepth (SessionItem *item, int level=0)
 
void processAboutToRemoveItem (SessionItem *parent, const TagRow &tagrow)
 
void processDataChange (SessionItem *item, int role)
 Processes signals from the model when item data changed. More...
 
void processItemInserted (SessionItem *parent, const TagRow &tagrow)
 
void processItemRemoved (SessionItem *parent, const TagRow &tagrow)
 
void unsubscribe (Callbacks::slot_t client)
 

Public Attributes

bool m_active {true}
 
SessionItemm_item {nullptr}
 
ItemMapperm_itemMapper {nullptr}
 
Signal< Callbacks::item_tagrow_tm_on_about_to_remove_item
 
Signal< Callbacks::item_str_tm_on_child_property_change
 
Signal< Callbacks::item_int_tm_on_data_change
 
Signal< Callbacks::item_tm_on_item_destroy
 
Signal< Callbacks::item_tagrow_tm_on_item_inserted
 
Signal< Callbacks::item_tagrow_tm_on_item_removed
 
Signal< Callbacks::item_str_tm_on_property_change
 

Detailed Description

Definition at line 24 of file itemmapper.cpp.

Constructor & Destructor Documentation

◆ ItemMapperImpl()

ModelView::ItemMapper::ItemMapperImpl::ItemMapperImpl ( ItemMapper item_mapper)
inline

Definition at line 37 of file itemmapper.cpp.

37 : m_itemMapper(item_mapper) {}

Member Function Documentation

◆ callOnAboutToRemoveItem()

void ModelView::ItemMapper::ItemMapperImpl::callOnAboutToRemoveItem ( SessionItem parent,
const TagRow tagrow 
)
inline

Notifies all callbacks subscribed to "on row about to be removed".

Definition at line 140 of file itemmapper.cpp.

141  {
142  if (m_active)
143  m_on_about_to_remove_item(parent, tagrow);
144  }
Signal< Callbacks::item_tagrow_t > m_on_about_to_remove_item
Definition: itemmapper.cpp:32

References ModelView::ItemMapper::ItemMapperImpl::m_active, and ModelView::ItemMapper::ItemMapperImpl::m_on_about_to_remove_item.

Referenced by ModelView::ItemMapper::ItemMapperImpl::processAboutToRemoveItem().

◆ callOnChildPropertyChange()

void ModelView::ItemMapper::ItemMapperImpl::callOnChildPropertyChange ( SessionItem item,
const std::string &  property_name 
)
inline

Notifies all callbacks subscribed to "child property changed" event.

Definition at line 116 of file itemmapper.cpp.

117  {
118  if (m_active)
119  m_on_child_property_change(item, property_name);
120  }
Signal< Callbacks::item_str_t > m_on_child_property_change
Definition: itemmapper.cpp:29

References ModelView::ItemMapper::ItemMapperImpl::m_active, and ModelView::ItemMapper::ItemMapperImpl::m_on_child_property_change.

Referenced by ModelView::ItemMapper::ItemMapperImpl::processDataChange().

◆ callOnDataChange()

void ModelView::ItemMapper::ItemMapperImpl::callOnDataChange ( SessionItem item,
int  role 
)
inline

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

Definition at line 100 of file itemmapper.cpp.

101  {
102  if (m_active)
103  m_on_data_change(item, role);
104  }
Signal< Callbacks::item_int_t > m_on_data_change
Definition: itemmapper.cpp:27

References ModelView::ItemMapper::ItemMapperImpl::m_active, and ModelView::ItemMapper::ItemMapperImpl::m_on_data_change.

Referenced by ModelView::ItemMapper::ItemMapperImpl::processDataChange().

◆ callOnItemInserted()

void ModelView::ItemMapper::ItemMapperImpl::callOnItemInserted ( SessionItem parent,
const TagRow tagrow 
)
inline

Notifies all callbacks subscribed to "on row inserted" event.

Definition at line 124 of file itemmapper.cpp.

125  {
126  if (m_active)
127  m_on_item_inserted(parent, tagrow);
128  }
Signal< Callbacks::item_tagrow_t > m_on_item_inserted
Definition: itemmapper.cpp:30

References ModelView::ItemMapper::ItemMapperImpl::m_active, and ModelView::ItemMapper::ItemMapperImpl::m_on_item_inserted.

Referenced by ModelView::ItemMapper::ItemMapperImpl::processItemInserted().

◆ callOnItemRemoved()

void ModelView::ItemMapper::ItemMapperImpl::callOnItemRemoved ( SessionItem parent,
const TagRow tagrow 
)
inline

Notifies all callbacks subscribed to "on row removed" event.

Definition at line 132 of file itemmapper.cpp.

133  {
134  if (m_active)
135  m_on_item_removed(parent, tagrow);
136  }
Signal< Callbacks::item_tagrow_t > m_on_item_removed
Definition: itemmapper.cpp:31

References ModelView::ItemMapper::ItemMapperImpl::m_active, and ModelView::ItemMapper::ItemMapperImpl::m_on_item_removed.

Referenced by ModelView::ItemMapper::ItemMapperImpl::processItemRemoved().

◆ callOnPropertyChange()

void ModelView::ItemMapper::ItemMapperImpl::callOnPropertyChange ( SessionItem item,
const std::string &  property_name 
)
inline

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

Definition at line 108 of file itemmapper.cpp.

109  {
110  if (m_active)
111  m_on_property_change(item, property_name);
112  }
Signal< Callbacks::item_str_t > m_on_property_change
Definition: itemmapper.cpp:28

References ModelView::ItemMapper::ItemMapperImpl::m_active, and ModelView::ItemMapper::ItemMapperImpl::m_on_property_change.

Referenced by ModelView::ItemMapper::ItemMapperImpl::processDataChange().

◆ nestlingDepth()

int ModelView::ItemMapper::ItemMapperImpl::nestlingDepth ( SessionItem item,
int  level = 0 
)
inline

Definition at line 50 of file itemmapper.cpp.

51  {
52  if (item == nullptr || item == m_itemMapper->model()->rootItem())
53  return -1;
54  if (item == m_item)
55  return level;
56  return nestlingDepth(item->parent(), level + 1);
57  }
SessionItem * parent() const
Returns parent item. Will return nullptr if item doesn't have a parent.
SessionItem * rootItem() const
Returns root item of the model.
int nestlingDepth(SessionItem *item, int level=0)
Definition: itemmapper.cpp:50

References ModelView::ItemMapper::ItemMapperImpl::m_item, ModelView::ItemMapper::ItemMapperImpl::m_itemMapper, ModelView::ModelListener< T >::model(), ModelView::SessionItem::parent(), and ModelView::SessionModel::rootItem().

Referenced by ModelView::ItemMapper::ItemMapperImpl::processDataChange().

Here is the call graph for this function:

◆ processAboutToRemoveItem()

void ModelView::ItemMapper::ItemMapperImpl::processAboutToRemoveItem ( SessionItem parent,
const TagRow tagrow 
)
inline

Definition at line 92 of file itemmapper.cpp.

93  {
94  if (parent == m_item)
96  }
void callOnAboutToRemoveItem(SessionItem *parent, const TagRow &tagrow)
Notifies all callbacks subscribed to "on row about to be removed".
Definition: itemmapper.cpp:140

References ModelView::ItemMapper::ItemMapperImpl::callOnAboutToRemoveItem(), and ModelView::ItemMapper::ItemMapperImpl::m_item.

Here is the call graph for this function:

◆ processDataChange()

void ModelView::ItemMapper::ItemMapperImpl::processDataChange ( SessionItem item,
int  role 
)
inline

Processes signals from the model when item data changed.

Definition at line 61 of file itemmapper.cpp.

62  {
63  int nestling = nestlingDepth(item);
64 
65  // own item data changed
66  if (nestling == 0)
67  callOnDataChange(item, role);
68 
69  // data of item's property changed
70  if (nestling == 1)
72 
73  // child property changed
74  if (nestling == 2) {
75  if (auto parent = item->parent())
76  callOnChildPropertyChange(parent, parent->tagRowOfItem(item).tag);
77  }
78  }
TagRow tagRowOfItem(const SessionItem *item) const
Returns pair of tag and row corresponding to given item.
std::string tag
Definition: tagrow.h:27
void callOnChildPropertyChange(SessionItem *item, const std::string &property_name)
Notifies all callbacks subscribed to "child property changed" event.
Definition: itemmapper.cpp:116
void callOnDataChange(SessionItem *item, int role)
Notifies all callbacks subscribed to "item data is changed" event.
Definition: itemmapper.cpp:100
void callOnPropertyChange(SessionItem *item, const std::string &property_name)
Notifies all callbacks subscribed to "item property is changed" event.
Definition: itemmapper.cpp:108

References ModelView::ItemMapper::ItemMapperImpl::callOnChildPropertyChange(), ModelView::ItemMapper::ItemMapperImpl::callOnDataChange(), ModelView::ItemMapper::ItemMapperImpl::callOnPropertyChange(), ModelView::ItemMapper::ItemMapperImpl::m_item, ModelView::ItemMapper::ItemMapperImpl::nestlingDepth(), ModelView::SessionItem::parent(), ModelView::TagRow::tag, and ModelView::SessionItem::tagRowOfItem().

Here is the call graph for this function:

◆ processItemInserted()

void ModelView::ItemMapper::ItemMapperImpl::processItemInserted ( SessionItem parent,
const TagRow tagrow 
)
inline

Definition at line 80 of file itemmapper.cpp.

81  {
82  if (parent == m_item)
83  callOnItemInserted(m_item, tagrow);
84  }
void callOnItemInserted(SessionItem *parent, const TagRow &tagrow)
Notifies all callbacks subscribed to "on row inserted" event.
Definition: itemmapper.cpp:124

References ModelView::ItemMapper::ItemMapperImpl::callOnItemInserted(), and ModelView::ItemMapper::ItemMapperImpl::m_item.

Here is the call graph for this function:

◆ processItemRemoved()

void ModelView::ItemMapper::ItemMapperImpl::processItemRemoved ( SessionItem parent,
const TagRow tagrow 
)
inline

Definition at line 86 of file itemmapper.cpp.

87  {
88  if (parent == m_item)
89  callOnItemRemoved(m_item, tagrow);
90  }
void callOnItemRemoved(SessionItem *parent, const TagRow &tagrow)
Notifies all callbacks subscribed to "on row removed" event.
Definition: itemmapper.cpp:132

References ModelView::ItemMapper::ItemMapperImpl::callOnItemRemoved(), and ModelView::ItemMapper::ItemMapperImpl::m_item.

Here is the call graph for this function:

◆ unsubscribe()

Member Data Documentation

◆ m_active

◆ m_item

◆ m_itemMapper

ItemMapper* ModelView::ItemMapper::ItemMapperImpl::m_itemMapper {nullptr}

Definition at line 25 of file itemmapper.cpp.

Referenced by ModelView::ItemMapper::ItemMapperImpl::nestlingDepth().

◆ m_on_about_to_remove_item

Signal<Callbacks::item_tagrow_t> ModelView::ItemMapper::ItemMapperImpl::m_on_about_to_remove_item

◆ m_on_child_property_change

Signal<Callbacks::item_str_t> ModelView::ItemMapper::ItemMapperImpl::m_on_child_property_change

◆ m_on_data_change

Signal<Callbacks::item_int_t> ModelView::ItemMapper::ItemMapperImpl::m_on_data_change

◆ m_on_item_destroy

Signal<Callbacks::item_t> ModelView::ItemMapper::ItemMapperImpl::m_on_item_destroy

Definition at line 26 of file itemmapper.cpp.

Referenced by ModelView::ItemMapper::ItemMapperImpl::unsubscribe().

◆ m_on_item_inserted

Signal<Callbacks::item_tagrow_t> ModelView::ItemMapper::ItemMapperImpl::m_on_item_inserted

◆ m_on_item_removed

Signal<Callbacks::item_tagrow_t> ModelView::ItemMapper::ItemMapperImpl::m_on_item_removed

◆ m_on_property_change

Signal<Callbacks::item_str_t> ModelView::ItemMapper::ItemMapperImpl::m_on_property_change

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