From 756c0cf21a80779db04bbee684f75feba33108de Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 25 Jan 2019 16:24:15 +1300 Subject: [PATCH] Raw SED-ML view: make sure that a file is still valid before actually reloading it. --- .../RawSEDMLView/src/rawsedmlviewplugin.cpp | 6 ++---- .../RawSEDMLView/src/rawsedmlviewwidget.cpp | 14 ++++++++++++-- .../editing/RawSEDMLView/src/rawsedmlviewwidget.h | 2 ++ 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/plugins/editing/RawSEDMLView/src/rawsedmlviewplugin.cpp b/src/plugins/editing/RawSEDMLView/src/rawsedmlviewplugin.cpp index 4337241a80..991515edec 100644 --- a/src/plugins/editing/RawSEDMLView/src/rawsedmlviewplugin.cpp +++ b/src/plugins/editing/RawSEDMLView/src/rawsedmlviewplugin.cpp @@ -21,12 +21,10 @@ along with this program. If not, see . // Raw SED-ML view plugin //============================================================================== -#include "corecliutils.h" #include "coreguiutils.h" #include "filemanager.h" #include "rawsedmlviewplugin.h" #include "rawsedmlviewwidget.h" -#include "sedmlfilemanager.h" #include "sedmlsupportplugin.h" //============================================================================== @@ -337,9 +335,9 @@ QString RawSEDMLViewPlugin::viewDefaultFileExtension() const QWidget * RawSEDMLViewPlugin::viewWidget(const QString &pFileName) { - // Make sure that we are dealing with a SED-ML file (be it new or not) + // Make sure that we are dealing with a valid file - if (!SEDMLSupport::SedmlFileManager::instance()->sedmlFile(pFileName)) + if (!mViewWidget->isValid(pFileName)) return nullptr; // Update and return our Raw SED-ML view widget using the given SED-ML file diff --git a/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.cpp b/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.cpp index 30e76b71fa..6c7b321d41 100644 --- a/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.cpp +++ b/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.cpp @@ -93,6 +93,15 @@ void RawSedmlViewWidget::retranslateUi() //============================================================================== +bool RawSedmlViewWidget::isValid(const QString &pFileName) const +{ + // Return whether we are dealing with a SED-ML file (be it new or not) + + return SEDMLSupport::SedmlFileManager::instance()->sedmlFile(pFileName); +} + +//============================================================================== + void RawSedmlViewWidget::initialize(const QString &pFileName, bool pUpdate) { // Retrieve the editing widget associated with the given file, if any @@ -204,14 +213,15 @@ void RawSedmlViewWidget::fileSaved(const QString &pFileName) void RawSedmlViewWidget::fileReloaded(const QString &pFileName) { - // The given file has been reloaded, so reload it, should it be managed + // The given file has been reloaded, so reload it, should it be managed and + // still valid // Note: if the view for the given file is not the active view, then to call // finalize() and then initialize() would activate the contents of the // view (but the file tab would still point to the previously active // file). However, we want to the 'old' file to remain the active one, // hence the extra argument we pass to initialize()... - if (mEditingWidgets.contains(pFileName)) { + if (mEditingWidgets.contains(pFileName) && isValid(pFileName)) { bool update = mEditingWidget == mEditingWidgets.value(pFileName); finalize(pFileName); diff --git a/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.h b/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.h index 42169cc60d..3d58fe7b5d 100644 --- a/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.h +++ b/src/plugins/editing/RawSEDMLView/src/rawsedmlviewwidget.h @@ -66,6 +66,8 @@ class RawSedmlViewWidget : public Core::ViewWidget void retranslateUi() override; + bool isValid(const QString &pFileName) const; + void initialize(const QString &pFileName, bool pUpdate = true); void finalize(const QString &pFileName);