From dbf9fc2f4b668131fc8ba0c732ab0a6c0ddfc949 Mon Sep 17 00:00:00 2001 From: Dmitry Yurov <d.yurov@fz-juelich.de> Date: Mon, 12 Feb 2018 17:54:59 +0100 Subject: [PATCH] Enable saving specular data in GUI Redmine: #1936 by replacing IntensityDataItem with DataItem where appropriate --- GUI/coregui/Models/JobItem.cpp | 6 +++--- GUI/coregui/Models/JobItemUtils.cpp | 4 ++-- GUI/coregui/Models/JobItemUtils.h | 7 ++++--- .../mainwindow/OutputDataIOHistory.cpp | 12 +++++------ GUI/coregui/mainwindow/OutputDataIOHistory.h | 20 +++++++++---------- .../mainwindow/OutputDataIOService.cpp | 13 ++++++------ GUI/coregui/mainwindow/OutputDataIOService.h | 4 ++-- GUI/coregui/mainwindow/SaveService.cpp | 2 +- GUI/coregui/mainwindow/projectdocument.cpp | 2 +- 9 files changed, 35 insertions(+), 35 deletions(-) diff --git a/GUI/coregui/Models/JobItem.cpp b/GUI/coregui/Models/JobItem.cpp index 21d35c01f77..aa221bdc33e 100644 --- a/GUI/coregui/Models/JobItem.cpp +++ b/GUI/coregui/Models/JobItem.cpp @@ -291,13 +291,13 @@ QString JobItem::defaultPresentationType() void JobItem::updateIntensityDataFileName() { - if (IntensityDataItem* item = intensityDataItem()) - item->setItemValue(IntensityDataItem::P_FILE_NAME, + if (DataItem* item = dataItem()) + item->setItemValue(DataItem::P_FILE_NAME, JobItemFunctions::jobResultsFileName(*this)); if (RealDataItem* realItem = realDataItem()) if (IntensityDataItem* item = realItem->intensityDataItem()) - item->setItemValue(IntensityDataItem::P_FILE_NAME, + item->setItemValue(DataItem::P_FILE_NAME, JobItemFunctions::jobReferenceFileName(*this)); } diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp index 0cf32b43898..b2309791ebb 100644 --- a/GUI/coregui/Models/JobItemUtils.cpp +++ b/GUI/coregui/Models/JobItemUtils.cpp @@ -123,7 +123,7 @@ void JobItemUtils::updateDataAxes(IntensityDataItem* intensityItem, //! loads intensity data from project directory -void JobItemUtils::loadIntensityData(IntensityDataItem *intensityItem, const QString &projectDir) +void JobItemUtils::loadIntensityData(DataItem *intensityItem, const QString &projectDir) { QString filename = intensityItem->fileName(projectDir); auto data = IntensityDataIOFactory::readOutputData(filename.toStdString()); @@ -133,7 +133,7 @@ void JobItemUtils::loadIntensityData(IntensityDataItem *intensityItem, const QSt //! Saves intensityData in project directory -void JobItemUtils::saveIntensityData(IntensityDataItem* intensityItem, const QString& projectDir) +void JobItemUtils::saveIntensityData(DataItem* intensityItem, const QString& projectDir) { if (!intensityItem || !intensityItem->getOutputData()) return; diff --git a/GUI/coregui/Models/JobItemUtils.h b/GUI/coregui/Models/JobItemUtils.h index 55d4161ac36..e3c7cdd32e4 100644 --- a/GUI/coregui/Models/JobItemUtils.h +++ b/GUI/coregui/Models/JobItemUtils.h @@ -18,9 +18,10 @@ #include "IDetector.h" #include <QMap> +class DataItem; class Simulation; -class IntensityDataItem; class InstrumentItem; +class IntensityDataItem; class JobItem; class SpecularDataItem; @@ -44,10 +45,10 @@ BA_CORE_API_ void updateDataAxes(IntensityDataItem* intensityItem, const InstrumentItem* instrumentItem); //! loads intensity data from project directory -BA_CORE_API_ void loadIntensityData(IntensityDataItem* intensityItem, const QString& projectDir); +BA_CORE_API_ void loadIntensityData(DataItem* intensityItem, const QString& projectDir); //! saves intensity data into project directory -BA_CORE_API_ void saveIntensityData(IntensityDataItem* intensityItem, const QString& projectDir); +BA_CORE_API_ void saveIntensityData(DataItem* intensityItem, const QString& projectDir); //! returns axes units names from their domain counterpart BA_CORE_API_ QString nameFromAxesUnits(AxesUnits units); diff --git a/GUI/coregui/mainwindow/OutputDataIOHistory.cpp b/GUI/coregui/mainwindow/OutputDataIOHistory.cpp index 3ed11ba0259..29fdff624d8 100644 --- a/GUI/coregui/mainwindow/OutputDataIOHistory.cpp +++ b/GUI/coregui/mainwindow/OutputDataIOHistory.cpp @@ -17,7 +17,7 @@ //! Static method to create info for just saved IntensityDataItem. -OutputDataSaveInfo OutputDataSaveInfo::createSaved(const IntensityDataItem *item) +OutputDataSaveInfo OutputDataSaveInfo::createSaved(const DataItem *item) { Q_ASSERT(item); @@ -43,7 +43,7 @@ bool OutputDataSaveInfo::wasSavedBefore(const QDateTime& dtime) const //----------------------------------------------------------------------------- -void OutputDataDirHistory::markAsSaved(const IntensityDataItem *item) +void OutputDataDirHistory::markAsSaved(const DataItem *item) { if (contains(item)) throw GUIHelpers::Error("OutputDataDirHistory::markAsSaved() -> Error. " @@ -52,13 +52,13 @@ void OutputDataDirHistory::markAsSaved(const IntensityDataItem *item) m_history.push_back(OutputDataSaveInfo::createSaved(item)); } -bool OutputDataDirHistory::wasModifiedSinceLastSave(const IntensityDataItem *item) +bool OutputDataDirHistory::wasModifiedSinceLastSave(const DataItem *item) { // non existing item is treated as modified since last save return contains(item) ? itemInfo(item).wasModifiedSinceLastSave() : true; } -bool OutputDataDirHistory::contains(const IntensityDataItem *item) { +bool OutputDataDirHistory::contains(const DataItem *item) { for(auto& info : m_history) if(info.dataItem() == item) return true; @@ -78,7 +78,7 @@ QStringList OutputDataDirHistory::savedFileNames() const return result; } -OutputDataSaveInfo OutputDataDirHistory::itemInfo(const IntensityDataItem* item) const +OutputDataSaveInfo OutputDataDirHistory::itemInfo(const DataItem* item) const { for(auto& info : m_history) { if (info.dataItem() == item) @@ -96,7 +96,7 @@ bool OutputDataIOHistory::hasHistory(const QString& dirname) const } bool OutputDataIOHistory::wasModifiedSinceLastSave(const QString& dirname, - const IntensityDataItem* item) + const DataItem *item) { if (!hasHistory(dirname)) throw GUIHelpers::Error("OutputDataIOHistory::wasModifiedSinceLastSave() -> Error. " diff --git a/GUI/coregui/mainwindow/OutputDataIOHistory.h b/GUI/coregui/mainwindow/OutputDataIOHistory.h index f37489d2274..2bc9cd7fa8d 100644 --- a/GUI/coregui/mainwindow/OutputDataIOHistory.h +++ b/GUI/coregui/mainwindow/OutputDataIOHistory.h @@ -16,7 +16,7 @@ #define OUTPUTDATAIOHISTORY_H #include "WinDllMacros.h" -#include "IntensityDataItem.h" +#include "DataItem.h" #include <QVector> #include <QDateTime> @@ -27,11 +27,11 @@ class IntensityDataItem; class BA_CORE_API_ OutputDataSaveInfo { public: - OutputDataSaveInfo() : m_dataItem(nullptr){} + OutputDataSaveInfo() : m_dataItem(nullptr) {} - static OutputDataSaveInfo createSaved(const IntensityDataItem* item); + static OutputDataSaveInfo createSaved(const DataItem* item); - const IntensityDataItem* dataItem() const { return m_dataItem; } + const DataItem* dataItem() const { return m_dataItem; } QString fileName() const { return m_file_name; } @@ -42,7 +42,7 @@ private: QDateTime m_last_saved; QString m_file_name; - const IntensityDataItem* m_dataItem; + const DataItem* m_dataItem; }; //! Save history information for collection of IntensityDataItems. @@ -51,16 +51,16 @@ class BA_CORE_API_ OutputDataDirHistory { public: OutputDataDirHistory() {} - void markAsSaved(const IntensityDataItem* item); + void markAsSaved(const DataItem* item); - bool wasModifiedSinceLastSave(const IntensityDataItem* item); + bool wasModifiedSinceLastSave(const DataItem* item); - bool contains(const IntensityDataItem* item); + bool contains(const DataItem* item); QStringList savedFileNames() const; private: - OutputDataSaveInfo itemInfo(const IntensityDataItem* item) const; + OutputDataSaveInfo itemInfo(const DataItem* item) const; QVector<OutputDataSaveInfo> m_history; }; @@ -71,7 +71,7 @@ class BA_CORE_API_ OutputDataIOHistory { public: bool hasHistory(const QString& dirname) const; - bool wasModifiedSinceLastSave(const QString& dirname, const IntensityDataItem* item); + bool wasModifiedSinceLastSave(const QString& dirname, const DataItem* item); void setHistory(const QString& dirname, const OutputDataDirHistory& history); diff --git a/GUI/coregui/mainwindow/OutputDataIOService.cpp b/GUI/coregui/mainwindow/OutputDataIOService.cpp index 6e0f28b0de0..fb1aa9ea4ed 100644 --- a/GUI/coregui/mainwindow/OutputDataIOService.cpp +++ b/GUI/coregui/mainwindow/OutputDataIOService.cpp @@ -14,7 +14,7 @@ #include "OutputDataIOService.h" #include "ApplicationModels.h" -#include "IntensityDataItem.h" +#include "DataItem.h" #include "JobItemUtils.h" #include "ProjectUtils.h" #include "MessageService.h" @@ -83,17 +83,16 @@ void OutputDataIOService::load(const QString& projectDir, MessageService* messag //! Returns all IntensityDataItems available for save/load. -QVector<IntensityDataItem*> OutputDataIOService::dataItems() const +QVector<DataItem*> OutputDataIOService::dataItems() const { - QVector<IntensityDataItem*> result; + QVector<DataItem*> result; if (!m_applicationModels) return result; - for (auto item : m_applicationModels->nonXMLData()) { - if (auto intensityItem = dynamic_cast<IntensityDataItem*>(item)) - result.push_back(intensityItem); - } + for (auto item : m_applicationModels->nonXMLData()) + if (auto data_item = dynamic_cast<DataItem*>(item)) + result.push_back(data_item); return result; } diff --git a/GUI/coregui/mainwindow/OutputDataIOService.h b/GUI/coregui/mainwindow/OutputDataIOService.h index 8f81027d6ca..554017de9f6 100644 --- a/GUI/coregui/mainwindow/OutputDataIOService.h +++ b/GUI/coregui/mainwindow/OutputDataIOService.h @@ -20,7 +20,7 @@ #include <QObject> class ApplicationModels; -class IntensityDataItem; +class DataItem; class MessageService; //! Provide read/write of heavy data files in a separate thread. @@ -41,7 +41,7 @@ public: void load(const QString& projectDir, MessageService* messageService=nullptr); - QVector<IntensityDataItem* > dataItems() const; + QVector<DataItem* > dataItems() const; private: void cleanOldFiles(const QString& projectDir, const QStringList& oldSaves, diff --git a/GUI/coregui/mainwindow/SaveService.cpp b/GUI/coregui/mainwindow/SaveService.cpp index 85c2718ae69..41e3880f92a 100644 --- a/GUI/coregui/mainwindow/SaveService.cpp +++ b/GUI/coregui/mainwindow/SaveService.cpp @@ -136,7 +136,7 @@ void SaveService::process_queue() QString project_file_name = m_save_queue.dequeue(); // saving project file in a main thread - bool isAutosave = project_file_name.contains(ProjectUtils::autosaveSubdir()) ? true : false; + const bool isAutosave = project_file_name.contains(ProjectUtils::autosaveSubdir()); m_document->save_project_file(project_file_name, isAutosave); if(m_document->hasData()) { diff --git a/GUI/coregui/mainwindow/projectdocument.cpp b/GUI/coregui/mainwindow/projectdocument.cpp index 4d7433f612a..328b154c73c 100644 --- a/GUI/coregui/mainwindow/projectdocument.cpp +++ b/GUI/coregui/mainwindow/projectdocument.cpp @@ -206,7 +206,7 @@ bool ProjectDocument::hasErrors() const bool ProjectDocument::hasData() const { - return m_dataService->dataItems().isEmpty() ? false : true; + return !m_dataService->dataItems().isEmpty(); } QString ProjectDocument::documentVersion() const -- GitLab