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

Table model to hold imported ASCII data after parsing it to multi-column presentation. More...

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

Public Types

using raw_data_t = std::vector< std::vector< std::string > >
 

Public Member Functions

 ImportTableModel (QObject *parent=nullptr)
 
 ~ImportTableModel () override
 
int columnCount (const QModelIndex &=QModelIndex()) const override
 
std::vector< ColumnInfocolumnInfo () const
 
QVariant data (const QModelIndex &index, int role=Qt::DisplayRole) const override
 
Qt::ItemFlags flags (const QModelIndex &index) const override
 
QVariant headerData (int section, Qt::Orientation orientation, int role) const override
 
int rowCount (const QModelIndex &=QModelIndex()) const override
 
bool setData (const QModelIndex &index, const QVariant &value, int role) override
 
void setRawData (const raw_data_t &raw_data)
 Sets content of the model. More...
 

Private Member Functions

QVariant dataFromIndex (const QModelIndex &index) const
 Returns data from index. Combines header data with parsed user data. More...
 
int utilityRowCount () const
 

Private Attributes

std::unique_ptr< ImportTableHeaderm_header
 
int m_maxColumnCount {0}
 parsed column data More...
 
raw_data_t m_rawData
 

Detailed Description

Table model to hold imported ASCII data after parsing it to multi-column presentation.

Definition at line 32 of file importtablemodel.h.

Member Typedef Documentation

◆ raw_data_t

using gui2::ImportTableModel::raw_data_t = std::vector<std::vector<std::string> >

Definition at line 36 of file importtablemodel.h.

Constructor & Destructor Documentation

◆ ImportTableModel()

gui2::ImportTableModel::ImportTableModel ( QObject *  parent = nullptr)

Definition at line 35 of file importtablemodel.cpp.

36  : QAbstractTableModel(parent)
37  , m_header(std::make_unique<ImportTableHeader>(default_header_ncols))
38 {
39 }
std::unique_ptr< ImportTableHeader > m_header

◆ ~ImportTableModel()

gui2::ImportTableModel::~ImportTableModel ( )
overridedefault

Member Function Documentation

◆ columnCount()

int gui2::ImportTableModel::columnCount ( const QModelIndex &  = QModelIndex()) const
override

Definition at line 59 of file importtablemodel.cpp.

60 {
61  return m_maxColumnCount;
62 }
int m_maxColumnCount
parsed column data

References m_maxColumnCount.

◆ columnInfo()

std::vector< ColumnInfo > gui2::ImportTableModel::columnInfo ( ) const

Definition at line 108 of file importtablemodel.cpp.

109 {
110  return m_header->columnInfo();
111 }

References m_header.

Referenced by gui2::ImportTableWidget::columnInfo().

◆ data()

QVariant gui2::ImportTableModel::data ( const QModelIndex &  index,
int  role = Qt::DisplayRole 
) const
override

Definition at line 64 of file importtablemodel.cpp.

65 {
66  if (!index.isValid())
67  return QVariant();
68 
69  if (role == Qt::DisplayRole || role == Qt::EditRole)
70  return dataFromIndex(index);
71 
72  else if (role == Qt::BackgroundRole && index.row() < utilityRowCount())
73  return QBrush(Qt::lightGray);
74 
75  return QVariant();
76 }
QVariant dataFromIndex(const QModelIndex &index) const
Returns data from index. Combines header data with parsed user data.

References dataFromIndex(), and utilityRowCount().

Here is the call graph for this function:

◆ dataFromIndex()

QVariant gui2::ImportTableModel::dataFromIndex ( const QModelIndex &  index) const
private

Returns data from index. Combines header data with parsed user data.

Definition at line 120 of file importtablemodel.cpp.

121 {
122  if (!index.isValid())
123  return QVariant();
124 
125  if (index.row() < utilityRowCount()) {
126  return m_header->data(index.row(), index.column());
127 
128  } else {
129  int row = index.row() - utilityRowCount();
130  if (row >= 0 && row < static_cast<int>(m_rawData.size())) {
131  int col = index.column();
132  if (col >= 0 && col < static_cast<int>(m_rawData[row].size())) {
133  auto str = m_rawData[static_cast<int>(row)][static_cast<int>(col)];
134  return QString::fromStdString(str);
135  }
136  }
137  }
138  return QVariant();
139 }

References m_header, m_rawData, and utilityRowCount().

Referenced by data().

Here is the call graph for this function:

◆ flags()

Qt::ItemFlags gui2::ImportTableModel::flags ( const QModelIndex &  index) const
override

Definition at line 98 of file importtablemodel.cpp.

99 {
100  Qt::ItemFlags result = QAbstractItemModel::flags(index);
101  if (index.row() < utilityRowCount())
102  result |= Qt::ItemIsEnabled | Qt::ItemIsEditable;
103  else
104  result |= Qt::ItemIsEnabled | Qt::ItemIsSelectable;
105  return result;
106 }

References utilityRowCount().

Here is the call graph for this function:

◆ headerData()

QVariant gui2::ImportTableModel::headerData ( int  section,
Qt::Orientation  orientation,
int  role 
) const
override

Definition at line 89 of file importtablemodel.cpp.

90 {
91  if (orientation == Qt::Horizontal || role != Qt::DisplayRole)
92  return QVariant();
93 
94  return section < utilityRowCount() ? QString::fromStdString(m_header->rowName(section))
95  : QVariant(section - utilityRowCount() + 1);
96 }

References m_header, and utilityRowCount().

Here is the call graph for this function:

◆ rowCount()

int gui2::ImportTableModel::rowCount ( const QModelIndex &  = QModelIndex()) const
override

Definition at line 54 of file importtablemodel.cpp.

55 {
56  return static_cast<int>(m_rawData.size()) + utilityRowCount();
57 }

References m_rawData, and utilityRowCount().

Here is the call graph for this function:

◆ setData()

bool gui2::ImportTableModel::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role 
)
override

Definition at line 78 of file importtablemodel.cpp.

79 {
80  if (!index.isValid())
81  return false;
82 
83  if (index.row() < utilityRowCount() && role == Qt::EditRole)
84  return m_header->setData(index.row(), index.column(), value);
85 
86  return false;
87 }

References m_header, and utilityRowCount().

Here is the call graph for this function:

◆ setRawData()

void gui2::ImportTableModel::setRawData ( const raw_data_t raw_data)

Sets content of the model.

Definition at line 45 of file importtablemodel.cpp.

46 {
47  beginResetModel();
48  m_maxColumnCount = maxColumnCount(raw_data);
49  m_header = std::make_unique<ImportTableHeader>(m_maxColumnCount);
50  m_rawData = raw_data;
51  endResetModel();
52 }

References m_header, m_maxColumnCount, and m_rawData.

Referenced by gui2::ImportTableWidget::setRawData().

◆ utilityRowCount()

int gui2::ImportTableModel::utilityRowCount ( ) const
private

Definition at line 113 of file importtablemodel.cpp.

114 {
115  return m_header ? m_header->rowCount() : 0;
116 }

References m_header.

Referenced by data(), dataFromIndex(), flags(), headerData(), rowCount(), and setData().

Member Data Documentation

◆ m_header

std::unique_ptr<ImportTableHeader> gui2::ImportTableModel::m_header
private

◆ m_maxColumnCount

int gui2::ImportTableModel::m_maxColumnCount {0}
private

parsed column data

Definition at line 64 of file importtablemodel.h.

Referenced by columnCount(), and setRawData().

◆ m_rawData

raw_data_t gui2::ImportTableModel::m_rawData
private

Definition at line 62 of file importtablemodel.h.

Referenced by dataFromIndex(), rowCount(), and setRawData().


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