BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ModelView::ViewItem::ViewItemImpl Struct Reference
Collaboration diagram for ModelView::ViewItem::ViewItemImpl:
[legend]

Public Member Functions

 ViewItemImpl (SessionItem *item, int role)
 
void appendRow (std::vector< std::unique_ptr< ViewItem >> items)
 
ViewItemchild (int row, int column) const
 
QVariant data () const
 Returns item data associated with this RefViewItem. More...
 
std::vector< ViewItem * > get_children () const
 Returns vector of children. More...
 
int index_of_child (const ViewItem *child)
 
void insertRow (int row, std::vector< std::unique_ptr< ViewItem >> items)
 
ViewItemparent ()
 
void removeRow (int row)
 

Public Attributes

std::vector< std::unique_ptr< ViewItem > > children
 
int columns {0}
 
SessionItemitem {nullptr}
 
ViewItemparent_view_item {nullptr}
 
int role {0}
 
int rows {0}
 buffer to hold rows x columns More...
 

Detailed Description

Definition at line 26 of file viewitem.cpp.

Constructor & Destructor Documentation

◆ ViewItemImpl()

ModelView::ViewItem::ViewItemImpl::ViewItemImpl ( SessionItem item,
int  role 
)
inline

Definition at line 33 of file viewitem.cpp.

Member Function Documentation

◆ appendRow()

void ModelView::ViewItem::ViewItemImpl::appendRow ( std::vector< std::unique_ptr< ViewItem >>  items)
inline

Definition at line 35 of file viewitem.cpp.

36  {
37  insertRow(rows, std::move(items));
38  }
int rows
buffer to hold rows x columns
Definition: viewitem.cpp:28
void insertRow(int row, std::vector< std::unique_ptr< ViewItem >> items)
Definition: viewitem.cpp:40

References ModelView::ViewItem::ViewItemImpl::insertRow(), and ModelView::ViewItem::ViewItemImpl::rows.

Here is the call graph for this function:

◆ child()

ViewItem* ModelView::ViewItem::ViewItemImpl::child ( int  row,
int  column 
) const
inline

Definition at line 72 of file viewitem.cpp.

73  {
74  if (row < 0 || row >= rows)
75  throw std::runtime_error("Error in RefViewItem: wrong row)");
76 
77  if (column < 0 || column >= columns)
78  throw std::runtime_error("Error in RefViewItem: wrong column)");
79 
80  return children.at(static_cast<size_t>(column + row * columns)).get();
81  }
std::vector< std::unique_ptr< ViewItem > > children
Definition: viewitem.cpp:27

References ModelView::ViewItem::ViewItemImpl::children, ModelView::ViewItem::column(), ModelView::ViewItem::ViewItemImpl::columns, ModelView::ViewItem::row(), and ModelView::ViewItem::ViewItemImpl::rows.

Referenced by ModelView::ViewItem::ViewItemImpl::index_of_child().

Here is the call graph for this function:

◆ data()

QVariant ModelView::ViewItem::ViewItemImpl::data ( ) const
inline

Returns item data associated with this RefViewItem.

Definition at line 92 of file viewitem.cpp.

92 { return item ? item->data<QVariant>(role) : QVariant(); }
T data(int role=ItemDataRole::DATA) const
Returns data of given type T for given role.
Definition: sessionitem.h:148

References ModelView::SessionItem::data(), ModelView::ViewItem::ViewItemImpl::item, and ModelView::ViewItem::ViewItemImpl::role.

Here is the call graph for this function:

◆ get_children()

std::vector<ViewItem*> ModelView::ViewItem::ViewItemImpl::get_children ( ) const
inline

Returns vector of children.

Definition at line 96 of file viewitem.cpp.

97  {
98  std::vector<ViewItem*> result;
99  std::transform(children.begin(), children.end(), std::back_inserter(result),
100  [](const auto& x) { return x.get(); });
101  return result;
102  }

References ModelView::ViewItem::ViewItemImpl::children.

◆ index_of_child()

int ModelView::ViewItem::ViewItemImpl::index_of_child ( const ViewItem child)
inline

Definition at line 85 of file viewitem.cpp.

86  {
87  return Utils::IndexOfItem(children.begin(), children.end(), child);
88  }
int IndexOfItem(It begin, It end, const T &item)
Returns index corresponding to the first occurance of the item in the container.
ViewItem * child(int row, int column) const
Definition: viewitem.cpp:72

References ModelView::ViewItem::ViewItemImpl::child(), ModelView::ViewItem::ViewItemImpl::children, and ModelView::Utils::IndexOfItem().

Here is the call graph for this function:

◆ insertRow()

void ModelView::ViewItem::ViewItemImpl::insertRow ( int  row,
std::vector< std::unique_ptr< ViewItem >>  items 
)
inline

Definition at line 40 of file viewitem.cpp.

41  {
42  if (items.empty())
43  throw std::runtime_error("Error in ViewItemImpl: attempt to insert empty row");
44 
45  if (columns > 0 && items.size() != static_cast<size_t>(columns))
46  throw std::runtime_error("Error in ViewItemImpl: wrong number of columns.");
47 
48  if (row < 0 || row > rows)
49  throw std::runtime_error("Error in ViewItemImpl: invalid row index.");
50 
51  children.insert(std::next(children.begin(), row * columns),
52  std::make_move_iterator(items.begin()),
53  std::make_move_iterator(items.end()));
54 
55  columns = static_cast<int>(items.size());
56  ++rows;
57  }

References ModelView::ViewItem::ViewItemImpl::children, ModelView::ViewItem::ViewItemImpl::columns, ModelView::ViewItem::row(), and ModelView::ViewItem::ViewItemImpl::rows.

Referenced by ModelView::ViewItem::ViewItemImpl::appendRow().

Here is the call graph for this function:

◆ parent()

ViewItem* ModelView::ViewItem::ViewItemImpl::parent ( )
inline

Definition at line 83 of file viewitem.cpp.

83 { return parent_view_item; }

References ModelView::ViewItem::ViewItemImpl::parent_view_item.

◆ removeRow()

void ModelView::ViewItem::ViewItemImpl::removeRow ( int  row)
inline

Definition at line 59 of file viewitem.cpp.

60  {
61  if (row < 0 || row >= rows)
62  throw std::runtime_error("Error in RefViewItem: invalid row index.");
63 
64  auto begin = std::next(children.begin(), row * columns);
65  auto end = std::next(begin, columns);
66  children.erase(begin, end);
67  --rows;
68  if (rows == 0)
69  columns = 0;
70  }

References ModelView::ViewItem::ViewItemImpl::children, ModelView::ViewItem::ViewItemImpl::columns, ModelView::ViewItem::row(), and ModelView::ViewItem::ViewItemImpl::rows.

Here is the call graph for this function:

Member Data Documentation

◆ children

◆ columns

int ModelView::ViewItem::ViewItemImpl::columns {0}

◆ item

SessionItem* ModelView::ViewItem::ViewItemImpl::item {nullptr}

Definition at line 30 of file viewitem.cpp.

Referenced by ModelView::ViewItem::ViewItemImpl::data().

◆ parent_view_item

ViewItem* ModelView::ViewItem::ViewItemImpl::parent_view_item {nullptr}

Definition at line 32 of file viewitem.cpp.

Referenced by ModelView::ViewItem::ViewItemImpl::parent().

◆ role

int ModelView::ViewItem::ViewItemImpl::role {0}

Definition at line 31 of file viewitem.cpp.

Referenced by ModelView::ViewItem::ViewItemImpl::data().

◆ rows

int ModelView::ViewItem::ViewItemImpl::rows {0}

The documentation for this struct was generated from the following file: