diff --git a/GUI/Views/JobView.cpp b/GUI/Views/JobView.cpp index 8b91d570d477cd3f0785455073de7bae188c7451..1704ddc827f04a32beffcd5699a8b7150f966919 100644 --- a/GUI/Views/JobView.cpp +++ b/GUI/Views/JobView.cpp @@ -25,6 +25,7 @@ #include "GUI/Views/JobWidgets/JobSelectorWidget.h" #include "GUI/Views/JobWidgets/JobViewActivities.h" #include "GUI/mainwindow/mainwindow.h" +#include "GUI/mainwindow/projectmanager.h" #include <QMenu> JobView::JobView(MainWindow* mainWindow) @@ -56,6 +57,11 @@ void JobView::fillViewMenu(QMenu* menu) menu->addAction(action); } +ProjectDocument* JobView::document() const +{ + return ProjectManager::instance()->document(); +} + void JobView::onFocusRequest(JobItem* jobItem) { if (jobItem->runInBackground()) @@ -96,10 +102,10 @@ void JobView::onSelectionChanged(JobItem* jobItem) void JobView::createSubWindows() { - m_jobOutputDataWidget = new JobOutputDataWidget(m_mainWindow->jobModel(), this); - m_jobSelector = new JobSelectorWidget(m_mainWindow->jobModel(), this); - m_jobRealTimeWidget = new JobRealTimeWidget(m_mainWindow->jobModel(), this); - m_fitActivityPanel = new FitActivityPanel(m_mainWindow->jobModel(), this); + m_jobOutputDataWidget = new JobOutputDataWidget(document()->jobModel(), this); + m_jobSelector = new JobSelectorWidget(document()->jobModel(), this); + m_jobRealTimeWidget = new JobRealTimeWidget(document()->jobModel(), this); + m_fitActivityPanel = new FitActivityPanel(document()->jobModel(), this); m_jobMessagePanel = new JobMessagePanel(this); m_docks->addWidget(JobViewFlags::JOB_LIST_DOCK, m_jobSelector, Qt::LeftDockWidgetArea); @@ -151,7 +157,7 @@ void JobView::connectActivityRelated() void JobView::connectJobRelated() { // Focus request: JobModel -> this - connect(m_mainWindow->jobModel(), &JobModel::focusRequest, this, &JobView::onFocusRequest); + connect(document()->jobModel(), &JobModel::focusRequest, this, &JobView::onFocusRequest); // JobItem selection: JobSelectorWidget -> this connect(m_jobSelector, &JobSelectorWidget::selectionChanged, this, diff --git a/GUI/Views/JobView.h b/GUI/Views/JobView.h index 78b0d84d8f68115ace2b98b8a677c8f50f67b8e3..3970b97020ec9866c4cd3f21b83a6c8d98be2814 100644 --- a/GUI/Views/JobView.h +++ b/GUI/Views/JobView.h @@ -28,6 +28,7 @@ class JobMessagePanel; class JobProgressAssistant; class JobItem; class DocksController; +class ProjectDocument; //! The JobView class is a main view to show list of jobs, job results and widgets for real time //! and fitting activities. @@ -40,6 +41,8 @@ public: void fillViewMenu(QMenu* menu); + ProjectDocument* document() const; + signals: void focusRequest(int); void activityChanged(int activity); diff --git a/GUI/Views/SampleView.cpp b/GUI/Views/SampleView.cpp index e73618a2150550eca380ddffcb56c66fb634821a..b18eb6b279eb24a974a67eccaee93958adef5275 100644 --- a/GUI/Views/SampleView.cpp +++ b/GUI/Views/SampleView.cpp @@ -25,6 +25,7 @@ #include "GUI/Views/SampleDesigner/SampleTreeWidget.h" #include "GUI/Views/SampleDesigner/ScriptPanel.h" #include "GUI/mainwindow/mainwindow.h" +#include "GUI/mainwindow/projectmanager.h" #include <QDockWidget> #include <QMenu> #include <memory> @@ -60,6 +61,11 @@ void SampleView::fillViewMenu(QMenu* menu) menu->addAction(action); } +ProjectDocument* SampleView::document() const +{ + return ProjectManager::instance()->document(); +} + void SampleView::createSubWindows() { m_sampleDesigner = new SampleDesigner(this); diff --git a/GUI/Views/SampleView.h b/GUI/Views/SampleView.h index 5bb86cd6745df454a40e481ae4e41f26f0d18a6d..23ac209ed14ac61208b70137e213ceefe387006e 100644 --- a/GUI/Views/SampleView.h +++ b/GUI/Views/SampleView.h @@ -28,6 +28,7 @@ class SampleTreeWidget; class SamplePropertyWidget; class ScriptPanel; class RealSpacePanel; +class ProjectDocument; class SampleView : public QMainWindow { Q_OBJECT @@ -40,6 +41,8 @@ public: void toggleRealSpaceView(); void fillViewMenu(QMenu* menu); + ProjectDocument* document() const; + private: void createSubWindows(); void connectSignals(); diff --git a/GUI/mainwindow/mainwindow.cpp b/GUI/mainwindow/mainwindow.cpp index bb02ee956a1db12ad4e7be7fe608c7a58847a8ca..ac83c8b0bd321895148dc6d909e80e282b50d29f 100644 --- a/GUI/mainwindow/mainwindow.cpp +++ b/GUI/mainwindow/mainwindow.cpp @@ -248,7 +248,8 @@ void MainWindow::onSessionModelViewActive(bool isActive) void MainWindow::closeEvent(QCloseEvent* event) { - if (jobModel()->hasUnfinishedJobs()) { + if (m_projectManager->document() != nullptr + && m_projectManager->document()->jobModel()->hasUnfinishedJobs()) { QMessageBox::warning(this, "Can't quit the application.", "Can't quit the application while jobs are running.\n" "Cancel running jobs or wait until they are completed.");