BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
mockwidgets.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // qt-mvvm: Model-view-view-model framework for large GUI applications
4 //
5 //! @file mvvm/tests/libtestmachinery/mockwidgets.cpp
6 //! @brief Implements class CLASS?
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2020
11 //! @authors Gennady Pospelov et al, Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #include "mockwidgets.h"
16 #include "mvvm/model/sessionitem.h"
18 #include "mvvm/model/tagrow.h"
21 
22 // ----------------------------------------------------------------------------
23 
25 {
26  setItem(item);
27 }
28 
30 {
31  if (m_item)
32  m_item->mapper()->unsubscribe(this);
33 }
34 
36 {
37  if (m_item == item)
38  return;
39 
40  if (m_item)
41  m_item->mapper()->unsubscribe(this);
42 
43  m_item = item;
44 
45  if (!m_item)
46  return;
47 
48  auto on_item_destroy = [this](ModelView::SessionItem* item) {
49  m_item = nullptr;
50  onItemDestroy(item);
51  };
52  m_item->mapper()->setOnItemDestroy(on_item_destroy, this);
53 
54  auto on_data_change = [this](ModelView::SessionItem* item, int role) {
55  onDataChange(item, role);
56  };
57  m_item->mapper()->setOnDataChange(on_data_change, this);
58 
59  auto on_property_change = [this](ModelView::SessionItem* item, std::string name) {
60  onPropertyChange(item, name);
61  };
62  m_item->mapper()->setOnPropertyChange(on_property_change, this);
63 
64  auto on_child_property_change = [this](ModelView::SessionItem* item, std::string name) {
65  onChildPropertyChange(item, name);
66  };
67  m_item->mapper()->setOnChildPropertyChange(on_child_property_change, this);
68 
69  auto on_item_inserted = [this](ModelView::SessionItem* item, ModelView::TagRow tagrow) {
70  onItemInserted(item, tagrow);
71  };
72  m_item->mapper()->setOnItemInserted(on_item_inserted, this);
73 
74  auto on_item_removed = [this](ModelView::SessionItem* item, ModelView::TagRow tagrow) {
75  onItemRemoved(item, tagrow);
76  };
77  m_item->mapper()->setOnItemRemoved(on_item_removed, this);
78 
79  auto on_about_to_remove_item = [this](ModelView::SessionItem* item, ModelView::TagRow tagrow) {
80  onAboutToRemoveItem(item, tagrow);
81  };
82  m_item->mapper()->setOnAboutToRemoveItem(on_about_to_remove_item, this);
83 }
84 
85 // ----------------------------------------------------------------------------
86 
88 {
89  setModel(model);
90 }
91 
93 {
94  if (m_model)
95  m_model->mapper()->unsubscribe(this);
96 }
97 
99 {
100  if (m_model == model)
101  return;
102 
103  if (m_model)
104  m_model->mapper()->unsubscribe(this);
105 
106  m_model = model;
107 
108  if (!m_model)
109  return;
110 
111  auto on_data_change = [this](ModelView::SessionItem* item, int role) {
112  onDataChange(item, role);
113  };
114  m_model->mapper()->setOnDataChange(on_data_change, this);
115 
116  auto on_item_inserted = [this](ModelView::SessionItem* item, ModelView::TagRow tagrow) {
117  onItemInserted(item, tagrow);
118  };
119  m_model->mapper()->setOnItemInserted(on_item_inserted, this);
120 
121  auto on_item_removed = [this](ModelView::SessionItem* item, ModelView::TagRow tagrow) {
122  onItemRemoved(item, tagrow);
123  };
124  m_model->mapper()->setOnItemRemoved(on_item_removed, this);
125 
126  auto on_about_to_remove_item = [this](ModelView::SessionItem* item, ModelView::TagRow tagrow) {
127  onAboutToRemoveItem(item, tagrow);
128  };
129  m_model->mapper()->setOnAboutToRemoveItem(on_about_to_remove_item, this);
130 
131  auto on_model_destroyed = [this](ModelView::SessionModel* model) {
132  m_model = nullptr;
133  onModelDestroyed(model);
134  };
135  m_model->mapper()->setOnModelDestroyed(on_model_destroyed, this);
136 
137  auto on_model_about_reset = [this](ModelView::SessionModel* model) {
138  onModelAboutToBeReset(model);
139  };
140  m_model->mapper()->setOnModelAboutToBeReset(on_model_about_reset, this);
141 
142  auto on_model_reset = [this](ModelView::SessionModel* model) { onModelReset(model); };
143  m_model->mapper()->setOnModelReset(on_model_reset, this);
144 }
virtual void onDataChange(ModelView::SessionItem *item, int role)=0
virtual void onItemDestroy(ModelView::SessionItem *item)=0
virtual void onItemInserted(ModelView::SessionItem *item, ModelView::TagRow)=0
virtual void onPropertyChange(ModelView::SessionItem *item, std::string name)=0
virtual void onAboutToRemoveItem(ModelView::SessionItem *item, ModelView::TagRow)=0
void setItem(ModelView::SessionItem *item)
Definition: mockwidgets.cpp:35
MockWidgetForItem(ModelView::SessionItem *item)
Definition: mockwidgets.cpp:24
ModelView::SessionItem * m_item
Definition: mockwidgets.h:52
ModelView::SessionModel * m_model
Definition: mockwidgets.h:73
void setModel(ModelView::SessionModel *model)
Definition: mockwidgets.cpp:98
MockWidgetForModel(ModelView::SessionModel *model)
Definition: mockwidgets.cpp:87
virtual void onModelAboutToBeReset(ModelView::SessionModel *)=0
virtual void onDataChange(ModelView::SessionItem *, int)=0
virtual void onItemRemoved(ModelView::SessionItem *, ModelView::TagRow)=0
virtual void onModelDestroyed(ModelView::SessionModel *)=0
virtual void onItemInserted(ModelView::SessionItem *, ModelView::TagRow)=0
virtual void onAboutToRemoveItem(ModelView::SessionItem *, ModelView::TagRow)=0
virtual void onModelReset(ModelView::SessionModel *)=0
void setOnItemDestroy(Callbacks::item_t f, Callbacks::slot_t owner) override
Definition: itemmapper.cpp:179
void setOnItemRemoved(Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
Sets callback to be notified on child removal.
Definition: itemmapper.cpp:204
void setOnAboutToRemoveItem(Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
Sets callback to be notified when row is about to be removed.
Definition: itemmapper.cpp:209
void setOnItemInserted(Callbacks::item_tagrow_t f, Callbacks::slot_t owner) override
Sets callback to be notified on child insertion.
Definition: itemmapper.cpp:199
void unsubscribe(Callbacks::slot_t client) override
Removes given client from all subscriptions.
Definition: itemmapper.cpp:214
void setOnDataChange(Callbacks::item_int_t f, Callbacks::slot_t owner) override
Sets callback to be notified on item's data change.
Definition: itemmapper.cpp:184
void setOnPropertyChange(Callbacks::item_str_t f, Callbacks::slot_t owner) override
Sets callback to be notified on item's property change.
Definition: itemmapper.cpp:189
void setOnChildPropertyChange(Callbacks::item_str_t f, Callbacks::slot_t owner) override
Sets callback to be notified on item's children property change.
Definition: itemmapper.cpp:194
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
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
void setOnItemRemoved(Callbacks::item_tagrow_t f, Callbacks::slot_t client) override
Sets callback to be notified on item remove.
Definition: modelmapper.cpp:69
void setOnItemInserted(Callbacks::item_tagrow_t f, Callbacks::slot_t client) override
Sets callback to be notified on item insert.
Definition: modelmapper.cpp:61
void setOnModelDestroyed(Callbacks::model_t f, Callbacks::slot_t client) override
Sets the callback for notifications on model destruction.
Definition: modelmapper.cpp:84
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
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
void unsubscribe(Callbacks::slot_t client) override
Removes given client from all subscriptions.
The main object representing an editable/displayable/serializable entity.
Definition: sessionitem.h:38
ItemMapper * mapper()
Returns item mapper. Allows subscribing to various events happening to the item.
Main class to hold hierarchy of SessionItem objects.
Definition: sessionmodel.h:37
ModelMapper * mapper()
Returns model mapper. Can be used to subscribe to various model's signal.
Aggregate to hold (tag, row) information for SessionModel.
Definition: tagrow.h:25
Defines class CLASS?
Defines class CLASS?
Defines class CLASS?
QString const & name(EShape k)
Definition: particles.cpp:21
Defines class CLASS?
Defines class CLASS?
Defines class CLASS?