diff --git a/GUI/coregui/Models/FilterPropertyProxy.cpp b/GUI/coregui/Models/FilterPropertyProxy.cpp index f851b13c0a55ff5bce523e3e50970590c34fb200..3a87262cb21bf23f43f1b3353c0caa62c90964ab 100644 --- a/GUI/coregui/Models/FilterPropertyProxy.cpp +++ b/GUI/coregui/Models/FilterPropertyProxy.cpp @@ -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 //{ diff --git a/GUI/coregui/Models/FilterPropertyProxy.h b/GUI/coregui/Models/FilterPropertyProxy.h index 35613387978d6cf7f4c6df2720bdd81e3c537e45..5a5763ecac72584a83945916f2bebf1ddea0a94d 100644 --- a/GUI/coregui/Models/FilterPropertyProxy.h +++ b/GUI/coregui/Models/FilterPropertyProxy.h @@ -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; diff --git a/GUI/coregui/Models/ParameterTuningModel.cpp b/GUI/coregui/Models/ParameterTuningModel.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a08ff38c477a0c267b5e1abd9c4c66e17e05cc20 --- /dev/null +++ b/GUI/coregui/Models/ParameterTuningModel.cpp @@ -0,0 +1,67 @@ +// ************************************************************************** // +// +// 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; + +} diff --git a/GUI/coregui/Models/ParameterTuningModel.h b/GUI/coregui/Models/ParameterTuningModel.h new file mode 100644 index 0000000000000000000000000000000000000000..c725e5e7d8b4fabc513b58f7e9336e4fbf70503c --- /dev/null +++ b/GUI/coregui/Models/ParameterTuningModel.h @@ -0,0 +1,52 @@ +// ************************************************************************** // +// +// 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 diff --git a/GUI/coregui/Models/SessionModel.h b/GUI/coregui/Models/SessionModel.h index 82347e3c2e16d1a34a768a2b8d2937dacaf425d4..55fb504d7e9c8f379f6e75a4b20fdaa0ffb52f59 100644 --- a/GUI/coregui/Models/SessionModel.h +++ b/GUI/coregui/Models/SessionModel.h @@ -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 diff --git a/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp b/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp index 7f77e496af58657d8015aed279a28c442ea97099..0c047c982ab727af4db0fbc3b7b9e5e786332a06 100644 --- a/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp +++ b/GUI/coregui/Views/JobWidgets/ModelTuningWidget.cpp @@ -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()));