BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
ParameterTuningModel.cpp
Go to the documentation of this file.
1 // ************************************************************************************************
2 //
3 // BornAgain: simulate and fit reflection and scattering
4 //
5 //! @file GUI/coregui/Models/ParameterTuningModel.cpp
6 //! @brief Implements class ParameterTuningModel
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 
19 #include <QMimeData>
20 
22 
23 Qt::ItemFlags ParameterTuningModel::flags(const QModelIndex& proxyIndex) const
24 {
25  Qt::ItemFlags result = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
26 
27  QModelIndex sourceIndex = toSourceIndex(proxyIndex);
28  if (sourceIndex.isValid()) {
29  if (sourceIndex.column() == SessionFlags::ITEM_VALUE)
30  result |= Qt::ItemIsEditable;
31 
32  const QString modelType = sourceIndex.data(SessionFlags::ModelTypeRole).toString();
33  if (modelType == "Parameter" && getParameterItem(proxyIndex))
34  result |= Qt::ItemIsDragEnabled;
35  }
36  return result;
37 }
38 
39 QMimeData* ParameterTuningModel::mimeData(const QModelIndexList& proxyIndexes) const
40 {
41  QMimeData* mimeData = new QMimeData();
42 
43  for (auto proxyIndex : proxyIndexes) {
44  if (ParameterItem* parameterItem = getParameterItem(proxyIndex)) {
45  QString path = FitParameterHelper::getParameterItemPath(parameterItem);
46  mimeData->setData(SessionXML::LinkMimeType, path.toLatin1());
47  break;
48  }
49  }
50  return mimeData;
51 }
52 
53 //! Returns ParameterItem from given proxy index
54 
55 ParameterItem* ParameterTuningModel::getParameterItem(const QModelIndex& proxyIndex) const
56 {
57  SessionModel* sessionModel = dynamic_cast<SessionModel*>(sourceModel());
58  ASSERT(sessionModel);
59 
60  QModelIndex sourceIndex = toSourceIndex(proxyIndex);
61  if (sourceIndex.column() == 0) {
62  return dynamic_cast<ParameterItem*>(sessionModel->itemForIndex(sourceIndex));
63  }
64  return nullptr;
65 }
#define ASSERT(condition)
Definition: Assert.h:31
Defines class FitParameterHelper.
Defines classes for ParameterTreeItems.
Defines class ParameterTuningModel.
Defines class SessionModel.
The FilterPropertyProxy class filters out all PropertyItem's and similar from SessionModel to have on...
static QModelIndex toSourceIndex(QModelIndex index)
static QString getParameterItemPath(const ParameterItem *parameterItem)
return path to given item in the ParameterTreeContainer
The ParameterItem class represent a tuning value in a parameter tuning tree.
Qt::ItemFlags flags(const QModelIndex &proxyIndex) const
QMimeData * mimeData(const QModelIndexList &proxyIndexes) const
ParameterTuningModel(QObject *parent=0)
ParameterItem * getParameterItem(const QModelIndex &proxyIndex) const
Returns ParameterItem from given proxy index.
SessionItem * itemForIndex(const QModelIndex &index) const
const QString LinkMimeType
Definition: SessionXML.h:27