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

Widget holding standard QTreeView and intended for displaying all top level items of SessionModel. More...

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

Signals

void itemSelected (ModelView::SessionItem *)
 

Public Member Functions

 TopItemsTreeView (SessionModel *model, QWidget *parent=nullptr)
 
 ~TopItemsTreeView ()
 
void setRootSessionItem (SessionItem *item)
 
void setSelected (SessionItem *item)
 Make given item selected in QTreeView. More...
 
void setViewModel (std::unique_ptr< ViewModel > viewModel)
 
void setViewModelDelegate (std::unique_ptr< ViewModelDelegate > delegate)
 
QTreeView * treeView ()
 
ViewModelviewModel () const
 

Private Slots

void onSelectionChanged (const QItemSelection &, const QItemSelection &)
 Processes selections in QTreeView. More...
 

Private Member Functions

QItemSelectionModel * selectionModel ()
 
void set_connected (bool flag)
 

Private Attributes

bool m_block_selection
 
std::unique_ptr< ViewModelDelegatem_delegate
 
QTreeView * m_treeView {nullptr}
 
std::unique_ptr< ViewModelm_viewModel
 

Detailed Description

Widget holding standard QTreeView and intended for displaying all top level items of SessionModel.

All property items (i.e. "thickness", "color" etc) will be filtered out, top level items (i.e. Layer, MultiLayer, ...) will be presented as simple parent/child tree.

Definition at line 30 of file topitemstreeview.h.

Constructor & Destructor Documentation

◆ TopItemsTreeView()

ModelView::TopItemsTreeView::TopItemsTreeView ( SessionModel model,
QWidget *  parent = nullptr 
)

Definition at line 20 of file topitemstreeview.cpp.

20  : ItemsTreeView(parent)
21 {
23 }
void setViewModel(std::unique_ptr< ViewModel > viewModel)
ItemsTreeView(QWidget *parent=nullptr)
MVVM_VIEWMODEL_EXPORT std::unique_ptr< ViewModel > CreateTopItemsViewModel(SessionModel *model)
Creates view model to represent SessionModel for Qt views.

References ModelView::Factory::CreateTopItemsViewModel(), and ModelView::ItemsTreeView::setViewModel().

Here is the call graph for this function:

◆ ~TopItemsTreeView()

ModelView::TopItemsTreeView::~TopItemsTreeView ( )
default

Member Function Documentation

◆ itemSelected

void ModelView::ItemsTreeView::itemSelected ( ModelView::SessionItem )
signalinherited

◆ onSelectionChanged

void ItemsTreeView::onSelectionChanged ( const QItemSelection &  ,
const QItemSelection &   
)
privateslotinherited

Processes selections in QTreeView.

Finds SessionItem corresponding to selected indexes and emit itemSelected signal.

Definition at line 79 of file itemstreeview.cpp.

80 {
82  return;
83 
84  auto indexes = m_treeView->selectionModel()->selectedIndexes();
85  if (!indexes.empty()) {
86  auto item = m_viewModel->sessionItemFromIndex(indexes.at(0));
87  m_block_selection = true;
88  itemSelected(item);
89  m_block_selection = false;
90  }
91 }
std::unique_ptr< ViewModel > m_viewModel
Definition: itemstreeview.h:66
void itemSelected(ModelView::SessionItem *)

References ModelView::ItemsTreeView::itemSelected(), ModelView::ItemsTreeView::m_block_selection, ModelView::ItemsTreeView::m_treeView, and ModelView::ItemsTreeView::m_viewModel.

Referenced by ModelView::ItemsTreeView::set_connected().

◆ selectionModel()

QItemSelectionModel * ItemsTreeView::selectionModel ( )
privateinherited

Definition at line 110 of file itemstreeview.cpp.

111 {
112  return m_treeView->selectionModel();
113 }

References ModelView::ItemsTreeView::m_treeView.

Referenced by ModelView::ItemsTreeView::set_connected(), and ModelView::ItemsTreeView::setSelected().

◆ set_connected()

void ItemsTreeView::set_connected ( bool  flag)
privateinherited

Definition at line 93 of file itemstreeview.cpp.

94 {
95  Q_ASSERT(selectionModel());
96 
97  if (flag)
98  connect(selectionModel(), &QItemSelectionModel::selectionChanged, this,
100  else
101  disconnect(selectionModel(), &QItemSelectionModel::selectionChanged, this,
103 }
QItemSelectionModel * selectionModel()
void onSelectionChanged(const QItemSelection &, const QItemSelection &)
Processes selections in QTreeView.

References ModelView::ItemsTreeView::onSelectionChanged(), and ModelView::ItemsTreeView::selectionModel().

Referenced by ModelView::ItemsTreeView::setViewModel().

Here is the call graph for this function:

◆ setRootSessionItem()

void ItemsTreeView::setRootSessionItem ( SessionItem item)
inherited

Definition at line 65 of file itemstreeview.cpp.

66 {
67  m_viewModel->setRootSessionItem(item);
68  m_treeView->expandAll();
69 }

References ModelView::ItemsTreeView::m_treeView, and ModelView::ItemsTreeView::m_viewModel.

◆ setSelected()

void ItemsTreeView::setSelected ( SessionItem item)
inherited

Make given item selected in QTreeView.

Definition at line 55 of file itemstreeview.cpp.

56 {
57  if (!m_viewModel)
58  return;
59 
60  auto indexes = m_viewModel->indexOfSessionItem(item);
61  if (!indexes.empty())
62  selectionModel()->select(indexes.at(0), QItemSelectionModel::SelectCurrent);
63 }

References ModelView::ItemsTreeView::m_viewModel, and ModelView::ItemsTreeView::selectionModel().

Here is the call graph for this function:

◆ setViewModel()

void ItemsTreeView::setViewModel ( std::unique_ptr< ViewModel viewModel)
inherited

Definition at line 38 of file itemstreeview.cpp.

39 {
40  m_viewModel = std::move(viewModel);
41  m_treeView->setItemDelegate(m_delegate.get());
42  m_treeView->setModel(m_viewModel.get());
43  m_treeView->expandAll();
44  m_treeView->resizeColumnToContents(0);
45  set_connected(true);
46 }
std::unique_ptr< ViewModelDelegate > m_delegate
Definition: itemstreeview.h:67
void set_connected(bool flag)
ViewModel * viewModel() const

References ModelView::ItemsTreeView::m_delegate, ModelView::ItemsTreeView::m_treeView, ModelView::ItemsTreeView::m_viewModel, ModelView::ItemsTreeView::set_connected(), and ModelView::ItemsTreeView::viewModel().

Referenced by ModelView::AllItemsTreeView::AllItemsTreeView(), TopItemsTreeView(), and ModelView::PropertyTreeView::setItem().

Here is the call graph for this function:

◆ setViewModelDelegate()

void ItemsTreeView::setViewModelDelegate ( std::unique_ptr< ViewModelDelegate delegate)
inherited

Definition at line 48 of file itemstreeview.cpp.

49 {
50  m_delegate = std::move(delegate);
51 }

References ModelView::ItemsTreeView::m_delegate.

Referenced by gui2::InstrumentPropertyEditor::setModels().

◆ treeView()

QTreeView * ItemsTreeView::treeView ( )
inherited

◆ viewModel()

ViewModel * ItemsTreeView::viewModel ( ) const
inherited

Definition at line 71 of file itemstreeview.cpp.

72 {
73  return m_viewModel.get();
74 }

References ModelView::ItemsTreeView::m_viewModel.

Referenced by ModelView::PropertyTreeView::setItem(), and ModelView::ItemsTreeView::setViewModel().

Member Data Documentation

◆ m_block_selection

bool ModelView::ItemsTreeView::m_block_selection
privateinherited

Definition at line 68 of file itemstreeview.h.

Referenced by ModelView::ItemsTreeView::onSelectionChanged().

◆ m_delegate

std::unique_ptr<ViewModelDelegate> ModelView::ItemsTreeView::m_delegate
privateinherited

◆ m_treeView

◆ m_viewModel


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