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

Custom selection model for data view model (AbstractViewModel). More...

Inheritance diagram for gui2::DataSelectionModel:
[legend]
Collaboration diagram for gui2::DataSelectionModel:
[legend]

Public Member Functions

 DataSelectionModel (ModelView::ViewModel *view_model, QObject *parent=nullptr)
 The constructor. More...
 
 ~DataSelectionModel ()=default
 
CanvasItemactiveCanvas () const
 Returns active canvas. More...
 
std::vector< CanvasItem * > selectedCanvas () const
 Returns vector of currently slected canvas. More...
 
ModelView::GraphItemselectedGraph () const
 Returns currently selected graph. If more than one graph is selected, will return first one. More...
 
std::vector< ModelView::GraphItem * > selectedGraphs () const
 
std::vector< ModelView::SessionItem * > selectedItems () const
 Return the selected items. More...
 
void selectItem (ModelView::SessionItem *item)
 Set the selection on a single item. More...
 
void selectItems (std::vector< ModelView::SessionItem * > items)
 Set the selection on a list of items. More...
 
const ModelView::ViewModelviewModel () const
 

Detailed Description

Custom selection model for data view model (AbstractViewModel).

Definition at line 34 of file dataselectionmodel.h.

Constructor & Destructor Documentation

◆ DataSelectionModel()

gui2::DataSelectionModel::DataSelectionModel ( ModelView::ViewModel view_model,
QObject *  parent = nullptr 
)

The constructor.

Definition at line 28 of file dataselectionmodel.cpp.

29  : QItemSelectionModel(view_model, parent)
30 {
31  // FIXME cover with unit tests after implementing ViewItemSelectionModel
32  connect(view_model, &ModelView::ViewModel::modelAboutToBeReset, [this]() { clearSelection(); });
33 }

◆ ~DataSelectionModel()

gui2::DataSelectionModel::~DataSelectionModel ( )
default

Member Function Documentation

◆ activeCanvas()

CanvasItem * gui2::DataSelectionModel::activeCanvas ( ) const

Returns active canvas.

The canvas is active when it is either selected, or one of its own graph is selected. If more than one canvas is selected, will return the first one.

Definition at line 73 of file dataselectionmodel.cpp.

74 {
75  for (auto item : selectedItems()) {
76  if (item->modelType() == Constants::CanvasItemType)
77  return static_cast<CanvasItem*>(item);
78  else if (item->modelType() == ModelView::Constants::GraphItemType)
79  return static_cast<CanvasItem*>(item->parent());
80  }
81  return nullptr;
82 }
std::vector< ModelView::SessionItem * > selectedItems() const
Return the selected items.
const model_type GraphItemType
Definition: mvvm_types.h:53
const std::string CanvasItemType

References gui2::Constants::CanvasItemType, ModelView::Constants::GraphItemType, and selectedItems().

Referenced by gui2::ImportDataEditor::canvasInfo(), gui2::DataSelectorWidget::onSelectionChanged(), and gui2::ImportDataEditor::setupConnections().

Here is the call graph for this function:

◆ selectedCanvas()

std::vector< CanvasItem * > gui2::DataSelectionModel::selectedCanvas ( ) const

Returns vector of currently slected canvas.

Definition at line 94 of file dataselectionmodel.cpp.

95 {
96  return ModelView::Utils::CastedItems<CanvasItem>(selectedItems());
97 }

References selectedItems().

Referenced by gui2::ImportDataEditorActions::onDeleteItem(), and gui2::ImportDataEditorActions::onMergeCanvases().

Here is the call graph for this function:

◆ selectedGraph()

ModelView::GraphItem * gui2::DataSelectionModel::selectedGraph ( ) const

Returns currently selected graph. If more than one graph is selected, will return first one.

Definition at line 86 of file dataselectionmodel.cpp.

87 {
88  auto graphs = selectedGraphs();
89  return graphs.empty() ? nullptr : graphs.at(0);
90 }
std::vector< ModelView::GraphItem * > selectedGraphs() const

References selectedGraphs().

Referenced by gui2::DataSelectorWidget::onSelectionChanged().

Here is the call graph for this function:

◆ selectedGraphs()

std::vector< ModelView::GraphItem * > gui2::DataSelectionModel::selectedGraphs ( ) const

Definition at line 99 of file dataselectionmodel.cpp.

100 {
101  return ModelView::Utils::CastedItems<ModelView::GraphItem>(selectedItems());
102 }

References selectedItems().

Referenced by gui2::ImportDataEditorActions::onDeleteItem(), and selectedGraph().

Here is the call graph for this function:

◆ selectedItems()

std::vector< ModelView::SessionItem * > gui2::DataSelectionModel::selectedItems ( ) const

Return the selected items.

Definition at line 59 of file dataselectionmodel.cpp.

60 {
61  auto items = ModelView::Utils::ItemsFromIndex(selectedIndexes());
62  return ModelView::Utils::UniqueItems(items);
63 }
MVVM_VIEWMODEL_EXPORT std::vector< SessionItem * > ItemsFromIndex(const QModelIndexList &index_list)
Returns vector of underlying SessionItem's for given index list.
MVVM_MODEL_EXPORT std::vector< SessionItem * > UniqueItems(const std::vector< SessionItem * > &items)
Returns vector with duplicates and 'nullptr' filtered out.
Definition: itemutils.cpp:170

References ModelView::Utils::ItemsFromIndex(), and ModelView::Utils::UniqueItems().

Referenced by activeCanvas(), selectedCanvas(), and selectedGraphs().

Here is the call graph for this function:

◆ selectItem()

void gui2::DataSelectionModel::selectItem ( ModelView::SessionItem item)

Set the selection on a single item.

Definition at line 36 of file dataselectionmodel.cpp.

37 {
38  selectItems({item});
39 }
void selectItems(std::vector< ModelView::SessionItem * > items)
Set the selection on a list of items.

References selectItems().

Referenced by gui2::ImportDataEditor::onImportDialogAccept().

Here is the call graph for this function:

◆ selectItems()

void gui2::DataSelectionModel::selectItems ( std::vector< ModelView::SessionItem * >  items)

Set the selection on a list of items.

Definition at line 42 of file dataselectionmodel.cpp.

43 {
44  QModelIndexList indexes;
45  for (auto item : items)
46  indexes << viewModel()->indexOfSessionItem(item);
47 
48  if (indexes.empty())
49  return;
50 
51  clearSelection();
52 
53  QItemSelection selection(indexes.front(), indexes.back());
54  auto flags = QItemSelectionModel::SelectCurrent | QItemSelectionModel::Rows;
55  select(selection, flags);
56 }
QModelIndexList indexOfSessionItem(const SessionItem *item) const
Returns list of model indices representing given SessionItem.
Definition: viewmodel.cpp:71
const ModelView::ViewModel * viewModel() const

References ModelView::ViewModel::indexOfSessionItem(), and viewModel().

Referenced by selectItem().

Here is the call graph for this function:

◆ viewModel()

const ModelView::ViewModel * gui2::DataSelectionModel::viewModel ( ) const

Definition at line 65 of file dataselectionmodel.cpp.

66 {
67  return static_cast<const ModelView::ViewModel*>(model());
68 }
Main class to represent content of SessionModel in Qt's trees and tables.
Definition: viewmodel.h:29

Referenced by selectItems().


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