BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
FitParameterProxyModel.h
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/FitParameterProxyModel.h
6 //! @brief Defines class FitParameterProxyModel
7 //!
8 //! @homepage http://www.bornagainproject.org
9 //! @license GNU General Public License v3 or higher (see COPYING)
10 //! @copyright Forschungszentrum Jülich GmbH 2018
11 //! @authors Scientific Computing Group at MLZ (see CITATION, AUTHORS)
12 //
13 // ************************************************************************************************
14 
15 #ifndef BORNAGAIN_GUI_COREGUI_MODELS_FITPARAMETERPROXYMODEL_H
16 #define BORNAGAIN_GUI_COREGUI_MODELS_FITPARAMETERPROXYMODEL_H
17 
18 #include <QAbstractItemModel>
19 #include <QStringList>
20 
21 class SessionModel;
23 class SessionItem;
24 
25 //! The FitParameterProxyModel adapts the original JobModel to show items from FitParameterContainer
26 //! in 5 column tree view.
27 //! It is derived from QAbstractItemModel (and not from QAbstractProxyModel).
28 
29 class FitParameterProxyModel : public QAbstractItemModel {
30  Q_OBJECT
31 
32 public:
33  explicit FitParameterProxyModel(FitParameterContainerItem* fitParContainer,
34  QObject* parent = 0);
35 
37 
39 
40  Qt::ItemFlags flags(const QModelIndex& index) const Q_DECL_OVERRIDE;
41  QModelIndex index(int row, int column, const QModelIndex& parent) const Q_DECL_OVERRIDE;
42  QModelIndex parent(const QModelIndex& child) const Q_DECL_OVERRIDE;
43  int rowCount(const QModelIndex& parent) const Q_DECL_OVERRIDE;
44  int columnCount(const QModelIndex& parent) const Q_DECL_OVERRIDE;
45  QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE;
46  bool setData(const QModelIndex& index, const QVariant& value, int role) Q_DECL_OVERRIDE;
47 
48  QStringList mimeTypes() const Q_DECL_OVERRIDE;
49  Qt::DropActions supportedDragActions() const Q_DECL_OVERRIDE;
50  Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE;
51  QMimeData* mimeData(const QModelIndexList& indexes) const Q_DECL_OVERRIDE;
52  bool canDropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column,
53  const QModelIndex& parent) const Q_DECL_OVERRIDE;
54  bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column,
55  const QModelIndex& parent) Q_DECL_OVERRIDE;
56 
57  QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE;
58 
59  QModelIndex indexOfItem(SessionItem* item) const;
60  SessionItem* itemForIndex(const QModelIndex& index) const;
61 
62  SessionModel* sourceModel() const;
63 
64  bool isValidSourceItem(SessionItem* item) const;
65 
66 private slots:
67  void onSourceDataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight,
68  const QVector<int>& roles);
69  void onSourceRowsRemoved(const QModelIndex& parent, int first, int last);
71 
72 private:
73  void connectModel(QAbstractItemModel* sourceModel, bool isConnect = true);
74  void addColumn(EColumn id, const QString& name, const QString& tooltip);
75 
77  QMap<int, QString> m_columnNames;
78  QMap<int, QString> m_columnToolTips;
79 };
80 
81 inline Qt::DropActions FitParameterProxyModel::supportedDragActions() const
82 {
83  return Qt::MoveAction | Qt::CopyAction;
84 }
85 
86 inline Qt::DropActions FitParameterProxyModel::supportedDropActions() const
87 {
88  return Qt::MoveAction | Qt::CopyAction;
89 }
90 
91 #endif // BORNAGAIN_GUI_COREGUI_MODELS_FITPARAMETERPROXYMODEL_H
The FitParameterProxyModel adapts the original JobModel to show items from FitParameterContainer in 5...
QModelIndex index(int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE
QMimeData * mimeData(const QModelIndexList &indexes) const Q_DECL_OVERRIDE
void connectModel(QAbstractItemModel *sourceModel, bool isConnect=true)
int columnCount(const QModelIndex &parent) const Q_DECL_OVERRIDE
bool canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const Q_DECL_OVERRIDE
QMap< int, QString > m_columnNames
QMap< int, QString > m_columnToolTips
bool setData(const QModelIndex &index, const QVariant &value, int role) Q_DECL_OVERRIDE
SessionItem * itemForIndex(const QModelIndex &index) const
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const Q_DECL_OVERRIDE
QStringList mimeTypes() const Q_DECL_OVERRIDE
QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE
SessionModel * sourceModel() const
QModelIndex indexOfItem(SessionItem *item) const
Qt::DropActions supportedDropActions() const Q_DECL_OVERRIDE
bool isValidSourceItem(SessionItem *item) const
Returns true if given item still exists in source model.
int rowCount(const QModelIndex &parent) const Q_DECL_OVERRIDE
void onSourceDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles)
FitParameterProxyModel(FitParameterContainerItem *fitParContainer, QObject *parent=0)
QModelIndex parent(const QModelIndex &child) const Q_DECL_OVERRIDE
void onSourceRowsRemoved(const QModelIndex &parent, int first, int last)
Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE
Qt::DropActions supportedDragActions() const Q_DECL_OVERRIDE
void addColumn(EColumn id, const QString &name, const QString &tooltip)
FitParameterContainerItem * m_root_item
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) Q_DECL_OVERRIDE
QString const & name(EShape k)
Definition: particles.cpp:21