From cc5f03a54cce9b9ecfaa7eb5d2a26dbd8e76fea4 Mon Sep 17 00:00:00 2001 From: Gennady Pospelov <g.pospelov@fz-juelich.de> Date: Thu, 21 Apr 2016 11:42:03 +0200 Subject: [PATCH] Gentle way of clearing JobModel to properly notify dependent widgets --- GUI/coregui/Models/JobModel.cpp | 11 ++++++++ GUI/coregui/Models/JobModel.h | 2 ++ GUI/coregui/Models/SessionModel.h | 2 +- .../IntensityDataWidgets/ColorMapPlot.cpp | 25 ------------------- 4 files changed, 14 insertions(+), 26 deletions(-) diff --git a/GUI/coregui/Models/JobModel.cpp b/GUI/coregui/Models/JobModel.cpp index d855ac967f1..5743f057914 100644 --- a/GUI/coregui/Models/JobModel.cpp +++ b/GUI/coregui/Models/JobModel.cpp @@ -110,6 +110,16 @@ bool JobModel::hasUnfinishedJobs() return m_queue_data->hasUnfinishedJobs(); } +void JobModel::clear() +{ + QMap<QString, SessionItem *> jobs = getTopItemMap(Constants::JobItemType); + for(auto it = jobs.begin(); it!=jobs.end(); ++it) { + removeJob(it.value()->index()); + } + + SessionModel::clear(); +} + void JobModel::runJob(const QModelIndex &index) { m_queue_data->runJob(getJobItemForIndex(index)); @@ -125,6 +135,7 @@ void JobModel::removeJob(const QModelIndex &index) { qDebug() << "NJobModel::removeJob(const QModelIndex &index)"; JobItem *jobItem = getJobItemForIndex(index); + Q_ASSERT(jobItem); m_queue_data->removeJob(jobItem->getIdentifier()); emit aboutToDeleteJobItem(jobItem); diff --git a/GUI/coregui/Models/JobModel.h b/GUI/coregui/Models/JobModel.h index 235466e3596..7dd4002df34 100644 --- a/GUI/coregui/Models/JobModel.h +++ b/GUI/coregui/Models/JobModel.h @@ -48,6 +48,8 @@ public: bool hasUnfinishedJobs(); + void clear(); + signals: void selectionChanged(JobItem *item); void aboutToDeleteJobItem(JobItem *item); diff --git a/GUI/coregui/Models/SessionModel.h b/GUI/coregui/Models/SessionModel.h index f417a2df441..7a2a84fab4e 100644 --- a/GUI/coregui/Models/SessionModel.h +++ b/GUI/coregui/Models/SessionModel.h @@ -79,7 +79,7 @@ public: QVector<QString> getAcceptableDefaultItemTypes(const QModelIndex &parent) const; - void clear(); + virtual void clear(); void load(const QString &filename = QString()); void save(const QString &filename = QString()); diff --git a/GUI/coregui/Views/IntensityDataWidgets/ColorMapPlot.cpp b/GUI/coregui/Views/IntensityDataWidgets/ColorMapPlot.cpp index 2dad456db99..b3fa9936e38 100644 --- a/GUI/coregui/Views/IntensityDataWidgets/ColorMapPlot.cpp +++ b/GUI/coregui/Views/IntensityDataWidgets/ColorMapPlot.cpp @@ -74,31 +74,6 @@ void ColorMapPlot::setItem(IntensityDataItem *item) } - -// m_item = item; - -// if (!m_item) -// return; - -// plotItem(m_item); - -//// connect(m_item, SIGNAL(intensityModified()), this, -//// SLOT(onIntensityModified())); -// m_mapper.reset(new ModelMapper); - -// m_mapper->setItem(item); -// m_mapper->setOnPropertyChange( -// [this](const QString &name) -// { -// onPropertyChanged(name); -// onIntensityModified(); -// }); -// m_mapper->setOnChildPropertyChange( -// [this](SessionItem* item, const QString name) -// { -//// if (item->parent() && item->parent()->modelType() == Constants::GroupItemType) -// onSubItemPropertyChanged(item->itemName(), name); -// }); } //! returns string containing bin content information -- GitLab