Skip to content
Snippets Groups Projects
Commit 071ffc34 authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

ParameterTuningModel is introduced to encapsulate parameter tuning/dragging activity

parent aa87806d
No related branches found
No related tags found
No related merge requests found
......@@ -36,42 +36,42 @@ QModelIndex FilterPropertyProxy::toSourceIndex(QModelIndex index)
return index;
}
QMimeData *FilterPropertyProxy::mimeData(const QModelIndexList &indexes) const
{
qDebug() << "FitParameterAbsModel::mimeData" << indexes;
QMimeData *mimeData = new QMimeData();
foreach(QModelIndex proxyIndex, indexes) {
QModelIndex index = FilterPropertyProxy::toSourceIndex(proxyIndex);
if(index.column() != 0)
continue;
//QMimeData *FilterPropertyProxy::mimeData(const QModelIndexList &indexes) const
//{
// qDebug() << "FitParameterAbsModel::mimeData" << indexes;
// QMimeData *mimeData = new QMimeData();
SessionModel *sessionModel = dynamic_cast<SessionModel *>(sourceModel());
Q_ASSERT(sessionModel);
if (ParameterItem *parameterItem
= dynamic_cast<ParameterItem *>(sessionModel->itemForIndex(index))) {
QString path = FitModelHelper::getParameterItemPath(parameterItem);
mimeData->setData(FitParameterAbsModel::MIME_TYPE, path.toLatin1());
qDebug() << " FilterPropertyProxy::mimeData" << path;
break;
}
}
// foreach(QModelIndex proxyIndex, indexes) {
// QModelIndex index = FilterPropertyProxy::toSourceIndex(proxyIndex);
// if(index.column() != 0)
// continue;
// QModelIndex index = toSourceIndex(indexes.first());
// if (index.isValid()) {
// if(SessionItem *item = static_cast<SessionItem *>(index.internalPointer())) {
// QString path = item->value().toString();
// SessionModel *sessionModel = dynamic_cast<SessionModel *>(sourceModel());
// Q_ASSERT(sessionModel);
// if (ParameterItem *parameterItem
// = dynamic_cast<ParameterItem *>(sessionModel->itemForIndex(index))) {
// QString path = FitModelHelper::getParameterItemPath(parameterItem);
// mimeData->setData(FitParameterAbsModel::MIME_TYPE, path.toLatin1());
// qDebug() << " FilterPropertyProxy::mimeData" << path;
// break;
// }
//// QString path = getPathFromIndex(index);
//// path = path.append("#%1").arg(itemFromIndex(index.sibling(index.row(), 1))
//// ->data(Qt::EditRole).toDouble());
// }
return mimeData;
}
//// QModelIndex index = toSourceIndex(indexes.first());
//// if (index.isValid()) {
//// if(SessionItem *item = static_cast<SessionItem *>(index.internalPointer())) {
//// QString path = item->value().toString();
//// mimeData->setData(FitParameterAbsModel::MIME_TYPE, path.toLatin1());
//// qDebug() << " FilterPropertyProxy::mimeData" << path;
//// }
////// QString path = getPathFromIndex(index);
////// path = path.append("#%1").arg(itemFromIndex(index.sibling(index.row(), 1))
////// ->data(Qt::EditRole).toDouble());
//// }
// return mimeData;
//}
//QStringList FilterPropertyProxy::mimeTypes() const
//{
......
......@@ -31,7 +31,7 @@ public:
static QModelIndex toSourceIndex(QModelIndex index);
QMimeData *mimeData(const QModelIndexList &indexes) const;
// QMimeData *mimeData(const QModelIndexList &indexes) const;
// QStringList mimeTypes() const Q_DECL_OVERRIDE;
......
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file coregui/Models/ParameterTuningModel.cpp
//! @brief Implements class ParameterTuningModel
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2016
//! @authors Scientific Computing Group at MLZ Garching
//! @authors Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
//! @authors Walter Van Herck, Joachim Wuttke
//
// ************************************************************************** //
#include "ParameterTuningModel.h"
#include "FitParameterItems.h"
#include "FitParameterAbsModel.h"
#include "FitModelHelper.h"
#include "SessionModel.h"
#include "ParameterTreeItems.h"
#include <QDebug>
#include <QMimeData>
ParameterTuningModel::ParameterTuningModel(QObject *parent)
: FilterPropertyProxy(2, parent)
{
}
QMimeData *ParameterTuningModel::mimeData(const QModelIndexList &indexes) const
{
qDebug() << "ParameterTuningModel::mimeData" << indexes;
QMimeData *mimeData = new QMimeData();
foreach(QModelIndex proxyIndex, indexes) {
QModelIndex index = FilterPropertyProxy::toSourceIndex(proxyIndex);
if(index.column() != 0)
continue;
SessionModel *sessionModel = dynamic_cast<SessionModel *>(sourceModel());
Q_ASSERT(sessionModel);
if (ParameterItem *parameterItem
= dynamic_cast<ParameterItem *>(sessionModel->itemForIndex(index))) {
QString path = FitModelHelper::getParameterItemPath(parameterItem);
mimeData->setData(FitParameterAbsModel::MIME_TYPE, path.toLatin1());
qDebug() << " FilterPropertyProxy::mimeData" << path;
break;
}
}
// QModelIndex index = toSourceIndex(indexes.first());
// if (index.isValid()) {
// if(SessionItem *item = static_cast<SessionItem *>(index.internalPointer())) {
// QString path = item->value().toString();
// mimeData->setData(FitParameterAbsModel::MIME_TYPE, path.toLatin1());
// qDebug() << " FilterPropertyProxy::mimeData" << path;
// }
//// QString path = getPathFromIndex(index);
//// path = path.append("#%1").arg(itemFromIndex(index.sibling(index.row(), 1))
//// ->data(Qt::EditRole).toDouble());
// }
return mimeData;
}
// ************************************************************************** //
//
// BornAgain: simulate and fit scattering at grazing incidence
//
//! @file coregui/Models/ParameterTuningModel.h
//! @brief Declares class ParameterTuningModel
//!
//! @homepage http://www.bornagainproject.org
//! @license GNU General Public License v3 or higher (see COPYING)
//! @copyright Forschungszentrum Jülich GmbH 2016
//! @authors Scientific Computing Group at MLZ Garching
//! @authors Céline Durniak, Marina Ganeva, David Li, Gennady Pospelov
//! @authors Walter Van Herck, Joachim Wuttke
//
// ************************************************************************** //
#ifndef PARAMETERTUNINGMODEL_H
#define PARAMETERTUNINGMODEL_H
#include "FilterPropertyProxy.h"
//!
//! \brief The ParameterTuningModel class represents parameters which can be tuned in real time
//! in ParameterTuningWidget. In the fitting activity context handles dragging of ParameterItem's
//! to the FitParametersWidget.
//!
class BA_CORE_API_ ParameterTuningModel : public FilterPropertyProxy
{
Q_OBJECT
public:
ParameterTuningModel(QObject *parent = 0);
QMimeData *mimeData(const QModelIndexList &indexes) const;
Qt::DropActions supportedDragActions() const;
Qt::DropActions supportedDropActions() const;
};
inline Qt::DropActions ParameterTuningModel::supportedDragActions() const
{
return Qt::CopyAction;
}
inline Qt::DropActions ParameterTuningModel::supportedDropActions() const
{
return Qt::IgnoreAction;
}
#endif
......@@ -129,12 +129,12 @@ inline bool SessionModel::setHeaderData(int, Qt::Orientation, const QVariant &,
inline Qt::DropActions SessionModel::supportedDragActions() const
{
return Qt::CopyAction | Qt::MoveAction;
return Qt::MoveAction;
}
inline Qt::DropActions SessionModel::supportedDropActions() const
{
return Qt::CopyAction | Qt::MoveAction;
return Qt::MoveAction;
}
inline QString SessionModel::getModelTag() const
......
......@@ -27,7 +27,7 @@
#include "IntensityDataItem.h"
#include "DesignerHelper.h"
#include "WarningSignWidget.h"
#include "FilterPropertyProxy.h"
#include "ParameterTuningModel.h"
#include "FitTools.h"
#include "ParameterTreeItems.h"
#include <QLabel>
......@@ -139,7 +139,7 @@ QVector<ParameterItem *> ModelTuningWidget::getSelectedParameters()
QVector<ParameterItem *> result;
QModelIndexList proxyIndexes = selectionModel()->selectedIndexes();
foreach(QModelIndex proxyIndex, proxyIndexes) {
QModelIndex index = FilterPropertyProxy::toSourceIndex(proxyIndex);
QModelIndex index = ParameterTuningModel::toSourceIndex(proxyIndex);
if(index.column() != 0)
continue;
......@@ -191,7 +191,7 @@ void ModelTuningWidget::updateParameterModel()
throw GUIHelpers::Error("ModelTuningWidget::updateParameterModel() -> Error."
"JobItem doesn't have sample or instrument model.");
FilterPropertyProxy *proxy = new FilterPropertyProxy(2, this);
ParameterTuningModel *proxy = new ParameterTuningModel(this);
proxy->setSourceModel(m_jobModel);
m_treeView->setModel(proxy);
m_treeView->setRootIndex(proxy->mapFromSource(m_currentJobItem->getItem(JobItem::T_PARAMETER_TREE)->index()));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment