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

Widget holding standard QTreeView and intended for displaying all properties of given SessionItem. More...

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

Signals

void itemSelected (ModelView::SessionItem *)
 

Public Member Functions

 PropertyTreeView (QWidget *parent=nullptr)
 
 ~PropertyTreeView ()
 
void setItem (SessionItem *item)
 
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 properties of given SessionItem.

Definition at line 25 of file propertytreeview.h.

Constructor & Destructor Documentation

◆ PropertyTreeView()

PropertyTreeView::PropertyTreeView ( QWidget *  parent = nullptr)

Definition at line 23 of file propertytreeview.cpp.

23  : ItemsTreeView(parent)
24 {
25  treeView()->setHeaderHidden(false);
26  // provide one click editing
27  treeView()->setEditTriggers(QAbstractItemView::AllEditTriggers);
28  treeView()->setAlternatingRowColors(true);
29 }
ItemsTreeView(QWidget *parent=nullptr)

References ModelView::ItemsTreeView::treeView().

Here is the call graph for this function:

◆ ~PropertyTreeView()

PropertyTreeView::~PropertyTreeView ( )
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:

◆ setItem()

void PropertyTreeView::setItem ( SessionItem item)

Definition at line 31 of file propertytreeview.cpp.

32 {
33  if (!item) {
34  treeView()->setModel(nullptr);
35  return;
36  }
37 
40  treeView()->setRootIsDecorated(false);
41  treeView()->expandAll();
42 }
void setViewModel(std::unique_ptr< ViewModel > viewModel)
ViewModel * viewModel() const
SessionModel * model() const
Returns the model to which given item belongs to.
void setRootSessionItem(SessionItem *item)
Definition: viewmodel.cpp:52
MVVM_VIEWMODEL_EXPORT std::unique_ptr< ViewModel > CreatePropertyViewModel(SessionModel *model)
Creates view model to represent SessionModel for Qt views.

References ModelView::Factory::CreatePropertyViewModel(), ModelView::SessionItem::model(), ModelView::ViewModel::setRootSessionItem(), ModelView::ItemsTreeView::setViewModel(), ModelView::ItemsTreeView::treeView(), and ModelView::ItemsTreeView::viewModel().

Referenced by gui2::DataSelectorWidget::onSelectionChanged(), and gui2::InstrumentPropertyEditor::setModels().

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)

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(), ModelView::TopItemsTreeView::TopItemsTreeView(), and 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

Definition at line 105 of file itemstreeview.cpp.

106 {
107  return m_treeView;
108 }

References ModelView::ItemsTreeView::m_treeView.

Referenced by PropertyTreeView(), setItem(), and gui2::InstrumentPropertyEditor::setModels().

◆ 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 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: