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

Controller for AbstractViewModel to show item properties. More...

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

Public Member Functions

 PropertyViewModelController (SessionModel *session_model, ViewModelBase *view_model)
 
std::vector< ViewItem * > findViews (const ModelView::SessionItem *item) const
 Returns all ViewItem's displaying given SessionItem. More...
 
QStringList horizontalHeaderLabels () const
 
SessionModelmodel () const
 
SessionItemrootSessionItem () const
 
SessionModelsessionModel () const
 Returns SessionModel handled by this controller. More...
 
void setChildrenStrategy (std::unique_ptr< ChildrenStrategyInterface > children_strategy)
 
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 setRootSessionItem (SessionItem *item)
 
void setRowStrategy (std::unique_ptr< RowStrategyInterface > row_strategy)
 
void setViewModel (ViewModelBase *view_model)
 
void unsubscribe (Callbacks::slot_t client={}) override
 Removes given client from all subscriptions. More...
 

Protected Member Functions

virtual void onAboutToRemoveItem (SessionItem *parent, TagRow tagrow)
 
void onDataChange (SessionItem *item, int role) override
 
virtual void onItemInserted (SessionItem *parent, TagRow tagrow)
 
virtual void onItemRemoved (SessionItem *parent, TagRow tagrow)
 
void update_branch (const SessionItem *item)
 

Protected Attributes

SessionModelm_model {nullptr}
 

Private Attributes

std::unique_ptr< ViewModelControllerImplp_impl
 

Detailed Description

Controller for AbstractViewModel to show item properties.

Shows property items, hides top level items, hides inactive items of GroupProperty.

Definition at line 47 of file standardviewmodelcontrollers.h.

Constructor & Destructor Documentation

◆ PropertyViewModelController()

PropertyViewModelController::PropertyViewModelController ( SessionModel session_model,
ViewModelBase view_model 
)
explicit

Definition at line 46 of file standardviewmodelcontrollers.cpp.

48  : ViewModelController(session_model, view_model)
49 {
50  setChildrenStrategy(std::make_unique<PropertyItemsStrategy>());
51  setRowStrategy(std::make_unique<LabelDataRowStrategy>());
52 }
void setChildrenStrategy(std::unique_ptr< ChildrenStrategyInterface > children_strategy)
ViewModelController(SessionModel *session_model, ViewModelBase *view_model=nullptr)
void setRowStrategy(std::unique_ptr< RowStrategyInterface > row_strategy)

References ModelView::ViewModelController::setChildrenStrategy(), and ModelView::ViewModelController::setRowStrategy().

Here is the call graph for this function:

Member Function Documentation

◆ findViews()

std::vector< ViewItem * > ViewModelController::findViews ( const ModelView::SessionItem item) const
inherited

Returns all ViewItem's displaying given SessionItem.

Definition at line 253 of file viewmodelcontroller.cpp.

254 {
255  return p_impl->findViews(item);
256 }
std::unique_ptr< ViewModelControllerImpl > p_impl

References ModelView::ViewModelController::p_impl.

Referenced by ModelView::ViewModelController::onDataChange(), and ModelView::ViewModelController::update_branch().

◆ horizontalHeaderLabels()

QStringList ViewModelController::horizontalHeaderLabels ( ) const
inherited

Definition at line 258 of file viewmodelcontroller.cpp.

259 {
260  return p_impl->m_rowStrategy->horizontalHeaderLabels();
261 }

References ModelView::ViewModelController::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); }

◆ onAboutToRemoveItem()

void ViewModelController::onAboutToRemoveItem ( SessionItem parent,
TagRow  tagrow 
)
protectedvirtualinherited

Definition at line 281 of file viewmodelcontroller.cpp.

282 {
283  auto item_to_remove = parent->getItem(tagrow.tag, tagrow.row);
284  if (item_to_remove == rootSessionItem()
285  || Utils::IsItemAncestor(rootSessionItem(), item_to_remove)) {
286  // special case when user removes SessionItem which is one of ancestors of our root item
287  // or root item iteslf
288  p_impl->m_viewModel->beginResetModel();
289  p_impl->m_viewModel->setRootViewItem(std::make_unique<RootViewItem>(nullptr));
290  p_impl->m_itemToVview.clear();
291  p_impl->m_rootItemPath = {};
292  p_impl->m_viewModel->endResetModel();
293  } else {
294  p_impl->remove_row_of_views(item_to_remove);
295  }
296 }
SessionItem * getItem(const std::string &tag, int row=0) const
Returns item at given row of given tag.
std::string tag
Definition: tagrow.h:27
MVVM_MODEL_EXPORT bool IsItemAncestor(const SessionItem *item, const SessionItem *candidate)
Returns true if 'candidate' is one of ancestor of given item.
Definition: itemutils.cpp:156

References ModelView::SessionItem::getItem(), ModelView::Utils::IsItemAncestor(), ModelView::ViewModelController::p_impl, ModelView::ViewModelController::rootSessionItem(), ModelView::TagRow::row, and ModelView::TagRow::tag.

Referenced by ModelView::ViewModelController::ViewModelController().

Here is the call graph for this function:

◆ onDataChange()

void PropertyViewModelController::onDataChange ( SessionItem item,
int  role 
)
overrideprotectedvirtual

Reimplemented from ModelView::ViewModelController.

Definition at line 54 of file standardviewmodelcontrollers.cpp.

55 {
57  // If data change occured with GroupItem, performs cleanup and regeneration of
58  // ViewItems, corresponding to groupItem's current index.
59  if (auto group = dynamic_cast<GroupItem*>(item))
60  update_branch(group);
61 }
Group item holds collection of predefined items.
Definition: groupitem.h:26
void update_branch(const SessionItem *item)
virtual void onDataChange(SessionItem *item, int role)

References ModelView::ViewModelController::onDataChange(), and ModelView::ViewModelController::update_branch().

Here is the call graph for this function:

◆ onItemInserted()

void ViewModelController::onItemInserted ( SessionItem parent,
TagRow  tagrow 
)
protectedvirtualinherited

Definition at line 274 of file viewmodelcontroller.cpp.

275 {
276  p_impl->insert_view(parent, tagrow);
277 }

References ModelView::ViewModelController::p_impl.

Referenced by ModelView::ViewModelController::ViewModelController().

◆ onItemRemoved()

void ViewModelController::onItemRemoved ( SessionItem parent,
TagRow  tagrow 
)
protectedvirtualinherited

Definition at line 279 of file viewmodelcontroller.cpp.

279 {}

Referenced by ModelView::ViewModelController::ViewModelController().

◆ rootSessionItem()

SessionItem * ViewModelController::rootSessionItem ( ) const
inherited

◆ sessionModel()

SessionModel * ViewModelController::sessionModel ( ) const
inherited

Returns SessionModel handled by this controller.

Definition at line 226 of file viewmodelcontroller.cpp.

227 {
228  return model();
229 }

References ModelView::ModelListener< SessionModel >::model().

Here is the call graph for this function:

◆ setChildrenStrategy()

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

Here is the call graph for this function:

◆ setRootSessionItem()

void ViewModelController::setRootSessionItem ( SessionItem item)
inherited

Definition at line 231 of file viewmodelcontroller.cpp.

232 {
233  if (!item)
234  throw std::runtime_error(
235  "Error in ViewModelController: atttemp to set nulptr as root item");
236 
237  if (item->model() != model())
238  throw std::runtime_error(
239  "Error in ViewModelController: atttemp to use item from alien model as new root.");
240 
241  p_impl->m_viewModel->beginResetModel();
242  p_impl->setRootSessionItemIntern(item);
243  p_impl->m_viewModel->endResetModel();
244 }
SessionModel * model() const
Returns the model to which given item belongs to.

References ModelView::SessionItem::model(), ModelView::ModelListener< SessionModel >::model(), and ModelView::ViewModelController::p_impl.

Here is the call graph for this function:

◆ setRowStrategy()

◆ setViewModel()

void ViewModelController::setViewModel ( ViewModelBase view_model)
inherited

Definition at line 206 of file viewmodelcontroller.cpp.

207 {
208  p_impl->m_viewModel = view_model;
209 }

References ModelView::ViewModelController::p_impl.

◆ 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_branch()

void ViewModelController::update_branch ( const SessionItem item)
protectedinherited

Definition at line 298 of file viewmodelcontroller.cpp.

299 {
300  auto views = findViews(item);
301  if (views.empty())
302  return;
303 
304  for (auto view : views)
305  p_impl->remove_children_of_view(view);
306 
307  p_impl->iterate(item, views.at(0));
308 }
std::vector< ViewItem * > findViews(const ModelView::SessionItem *item) const
Returns all ViewItem's displaying given SessionItem.

References ModelView::ViewModelController::findViews(), and ModelView::ViewModelController::p_impl.

Referenced by onDataChange(), and ModelView::PropertyFlatViewModelController::onDataChange().

Here is the call graph for this function:

Member Data Documentation

◆ m_model

◆ p_impl


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