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
 
SessionModel * model () const
 
SessionItem * rootSessionItem () const
 
SessionModel * sessionModel () 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

SessionModel * m_model {nullptr}
 

Private Attributes

std::unique_ptr< ViewModelControllerImpl > p_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: