diff --git a/GUI/Model/Data/DataItem.cpp b/GUI/Model/Data/DataItem.cpp index 3145c73f8c1395d6c5f99aea09877fc0360f4d4d..6b5f6fd3f2fedd5fb4169c67812108dd7b4b4b11 100644 --- a/GUI/Model/Data/DataItem.cpp +++ b/GUI/Model/Data/DataItem.cpp @@ -90,8 +90,11 @@ bool DataItem::containsNonXMLData() const return static_cast<bool>(m_datafield); } -QString DataItem::loadDatafield(const QString& projectDir, MessageService* messageService) +QString DataItem::loadDatafield(MessageService* messageService, const QString& projectDir) { + if (projectDir.isEmpty()) + return {}; + ASSERT(messageService); const QString filename = fileName(projectDir); try { @@ -123,7 +126,7 @@ bool DataItem::saveDatafield(const QString& projectDir) void DataItem::saveDatafieldInBackground(const QString &projectDir) { - if (!containsNonXMLData() || !isModifiedSinceLastSave()) + if (!containsNonXMLData() || !isModifiedSinceLastSave() || projectDir.isEmpty()) return; std::unique_lock<std::mutex> lock(m_update_data_mutex); diff --git a/GUI/Model/Data/DataItem.h b/GUI/Model/Data/DataItem.h index 47769f26d688b3383535eb4ea8ba811b1380c930..2eac217a529c246f6082e4687eae29ff72af655f 100644 --- a/GUI/Model/Data/DataItem.h +++ b/GUI/Model/Data/DataItem.h @@ -56,9 +56,9 @@ public: void setFileName(const QString& filename); QDateTime lastModified() const override; bool containsNonXMLData() const override; - QString loadDatafield(const QString& projectDir, MessageService* messageService) override; + QString loadDatafield(MessageService* messageService, const QString& projectDir = "") override; bool saveDatafield(const QString& projectDir) override; - void saveDatafieldInBackground(const QString& projectDir); + void saveDatafieldInBackground(const QString& projectDir = ""); void setLastModified(const QDateTime& dtime); diff --git a/GUI/Model/Data/RealItem.cpp b/GUI/Model/Data/RealItem.cpp index 65cd1fe38f9af26094390f3337bd4716432fbd22..2b5e9a4428c3994206e75dd5f8aa0d6ae7dd9c19 100644 --- a/GUI/Model/Data/RealItem.cpp +++ b/GUI/Model/Data/RealItem.cpp @@ -423,13 +423,13 @@ QString RealItem::readFrom(QXmlStreamReader* r, const QString& projectDir, // data } else if (tag == Tag::Data) { m_dataItem.reset(readItemToEnd<DataItem>(r, this, tag)); - dataError = m_dataItem->loadDatafield(projectDir, messageService); + dataError = m_dataItem->loadDatafield(messageService, projectDir); XML::gotoEndElementOfTag(r, tag); // native data } else if (tag == Tag::NativeData) { m_nativeDataItem.reset(readItemToEnd<DataItem>(r, this, tag)); - nativeDataError == m_nativeDataItem->loadDatafield(projectDir, messageService); + nativeDataError == m_nativeDataItem->loadDatafield(messageService, projectDir); XML::gotoEndElementOfTag(r, tag); // native data units diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp index 5f5ffaefdf0fd77f0c63eafab38698684b5e528b..517f480153dd87150d8f3e1a74bc6b664aa0b7dc 100644 --- a/GUI/Model/Job/JobItem.cpp +++ b/GUI/Model/Job/JobItem.cpp @@ -628,7 +628,7 @@ void JobItem::readFrom(QXmlStreamReader* r, const QString& projectDir, // simulated data } else if (tag == Tag::SimulatedData) { m_simulatedDataItem.reset(readItemToEnd<DataItem>(r, this, Tag::SimulatedData)); - simError = m_simulatedDataItem->loadDatafield(projectDir, messageService); + simError = m_simulatedDataItem->loadDatafield(messageService, projectDir); XML::gotoEndElementOfTag(r, tag); // fit suite diff --git a/GUI/Model/Project/IOService.cpp b/GUI/Model/Project/IOService.cpp index 4434d858e425c9127630a65139a4fbe669ff8fe5..847121138ac769699acf21676fcf0fdfa587f70d 100644 --- a/GUI/Model/Project/IOService.cpp +++ b/GUI/Model/Project/IOService.cpp @@ -82,7 +82,7 @@ void DatafieldIOService::loadDataFiles(const QString& projectDir, MessageService DatafieldDirHistory newHistory; for (SaveLoadInterface* item : dataInterfaces()) { try { - item->loadDatafield(projectDir, messageService); + item->loadDatafield(messageService, projectDir); newHistory.markAsSaved(item); // handling crash of GUI during job run and non-existing file if (auto* jobItem = parentJobItem(item)) { diff --git a/GUI/Support/IO/SaveLoadInterface.h b/GUI/Support/IO/SaveLoadInterface.h index d1893fe73a4cf26556cb41cde7ff1380069ca1d2..c44d9de6fc5f2aa2e45b6d004bf6e70ad6a0081d 100644 --- a/GUI/Support/IO/SaveLoadInterface.h +++ b/GUI/Support/IO/SaveLoadInterface.h @@ -29,7 +29,7 @@ public: virtual ~SaveLoadInterface() = default; //! Loads non-XML data from _projectDir_ and returns success flag. - virtual QString loadDatafield(const QString& projectDir, MessageService* messageService) = 0; + virtual QString loadDatafield(MessageService* messageService, const QString& projectDir = "") = 0; //! Saves non-XML data in _projectDir_ and returns success flag. virtual bool saveDatafield(const QString& projectDir) = 0;