diff --git a/GUI/Model/Device/DatafileItem.cpp b/GUI/Model/Device/DatafileItem.cpp index dfa68bb16e3c35e04fa18ac014cdce0e72baceb7..80307ad5f65abfd3bd1772710b79542553bbb60d 100644 --- a/GUI/Model/Device/DatafileItem.cpp +++ b/GUI/Model/Device/DatafileItem.cpp @@ -34,7 +34,7 @@ const QString BinaryData("BinaryData"); const QString Data("Data"); const QString InstrumentId("InstrumentId"); const QString Name("Name"); -const QString NativeData("NativeData"); +const QString NativeData("NativeData"); // obsolete since v22.0 const QString NativeDataUnits("NativeDataUnits"); // obsolete since v22.0 const QString PresentationType("PresentationType"); @@ -117,22 +117,6 @@ size_t DatafileItem::rank() const return data1DItem() ? 1 : 2; } -bool DatafileItem::hasNativeData() const -{ - return nativeDataItem() && nativeDataItem()->c_field(); -} - -DataItem* DatafileItem::nativeDataItem() const -{ - return m_nativeDataItem.get(); -} - -DataItem* DatafileItem::initNativeData() -{ - initDataItem(rank(), m_nativeDataItem); - return m_nativeDataItem.get(); -} - bool DatafileItem::holdsDimensionalData() const { const Frame& frame = dataItem()->c_field()->frame(); @@ -143,11 +127,6 @@ bool DatafileItem::holdsDimensionalData() const return false; } -const Datafield* DatafileItem::nativeDatafield() const -{ - return hasNativeData() ? nativeDataItem()->c_field() : nullptr; -} - //! Sets Datafield to underlying item. void DatafileItem::setTheDatafield(const Datafield& data) @@ -232,9 +211,6 @@ void DatafileItem::updateFileName() { if (DataItem* item = dataItem()) item->setFileName(GUI::Path::intensityDataFileName(realItemName(), "realdata")); - - if (DataItem* item = nativeDataItem()) - item->setFileName(GUI::Path::intensityDataFileName(realItemName(), "nativedata")); } void DatafileItem::writeTo(QXmlStreamWriter* w) const @@ -265,14 +241,6 @@ void DatafileItem::writeTo(QXmlStreamWriter* w) const m_dataItem->writeTo(w); w->writeEndElement(); } - - // native data - if (m_nativeDataItem) { - w->writeStartElement(Tag::NativeData); - XML::writeAttribute(w, XML::Attrib::type, m_nativeDataItem->TYPE); - m_nativeDataItem->writeTo(w); - w->writeEndElement(); - } } void DatafileItem::readFrom(QXmlStreamReader* r) @@ -312,12 +280,6 @@ void DatafileItem::readFrom(QXmlStreamReader* r) m_dataItem->readFrom(r); XML::gotoEndElementOfTag(r, tag); - // native data - } else if (tag == Tag::NativeData) { - ASSERT(m_dataItem); // read 'm_dataItem' before - initNativeData()->readFrom(r); - XML::gotoEndElementOfTag(r, tag); - } else r->skipCurrentElement(); } @@ -327,30 +289,16 @@ void DatafileItem::writeDatafiles(const QString& projectDir) const { if (m_dataItem) m_dataItem->saveDatafield(projectDir); - - if (m_nativeDataItem) - m_nativeDataItem->saveDatafield(projectDir); } QString DatafileItem::readDatafiles(const QString& projectDir, MessageService* messageService) { - QString dataError, nativeDataError; - - if (m_dataItem) - dataError = m_dataItem->loadDatafield(messageService, projectDir, rank()); - - if (m_nativeDataItem) - nativeDataError = m_nativeDataItem->loadDatafield(messageService, projectDir, rank()); - - // return error message - if (dataError.isEmpty() && nativeDataError.isEmpty()) - return {}; - else if (!dataError.isEmpty() && nativeDataError.isEmpty()) - return (dataError); - else if (dataError.isEmpty() && !nativeDataError.isEmpty()) - return (nativeDataError); - else - return (dataError + "\n" + nativeDataError); + if (m_dataItem) { + QString dataError = m_dataItem->loadDatafield(messageService, projectDir, rank()); + if (!dataError.isEmpty()) + return (dataError); + } + return {}; } void DatafileItem::copyTo(DatafileItem* const dest) const @@ -358,10 +306,14 @@ void DatafileItem::copyTo(DatafileItem* const dest) const GUI::Util::copyContents(this, dest); if (m_dataItem) +<<<<<<< HEAD dest->dataItem()->setDatafield(*dataItem()->c_field()); if (m_nativeDataItem) dest->nativeDataItem()->setDatafield(*nativeDataItem()->c_field()); +======= + realdata_dst->dataItem()->setDatafield(*dataItem()->c_field()); +>>>>>>> f7e5c9987a (rm all 'nativeUnits') } std::vector<int> DatafileItem::shape() const @@ -384,8 +336,5 @@ void DatafileItem::updateToInstrument(const InstrumentItem* instrument) return; // instrument == nullptr => unlinking => going back to native data - auto* native_data_item = nativeDataItem(); - auto* data_source = native_data_item ? native_data_item : data_item; - - std::unique_ptr<Datafield> native_data(data_source->c_field()->clone()); + // TODO now the function does nothing. do not remove this function, but give it meaning again } diff --git a/GUI/Model/Device/DatafileItem.h b/GUI/Model/Device/DatafileItem.h index 99d47cdfda8ef299e7c5da54fec53041180eb4d9..d27a5d99054e6b70c108be2d5d5fd95052132e41 100644 --- a/GUI/Model/Device/DatafileItem.h +++ b/GUI/Model/Device/DatafileItem.h @@ -51,17 +51,7 @@ public: size_t rank() const; - // native data - - bool hasNativeData() const; - DataItem* nativeDataItem() const; - - DataItem* initNativeData(); - bool holdsDimensionalData() const; - - const Datafield* nativeDatafield() const; - void setTheDatafield(const Datafield& data); // instrument @@ -106,19 +96,7 @@ private: QString m_presentationType; // DataItem can be `Data2DItem` and `Data1DItem` (default `Data2DItem`). - /* - "Native_data" is introduced and used in specular mode to keep the original axis - of the dataset. It also stores a copy of original intensity values inside datafield, - but these values are always the same for "data" and "native_data". - - At the moment of loading file to DatafileItem "data" and "native_data" are completely equal. - But after linking DatafileItem to instrument and changing the current units the axis of "data" - is changed. When we unlink DatafileItem from instrument, we restore the original axis from - "native_data", because now there is no other way to transform axis without Frame - coming from instrument. - */ std::unique_ptr<DataItem> m_dataItem; - std::unique_ptr<DataItem> m_nativeDataItem; }; #endif // BORNAGAIN_GUI_MODEL_DEVICE_DATAFILEITEM_H diff --git a/GUI/Model/Device/InstrumentItems.cpp b/GUI/Model/Device/InstrumentItems.cpp index fb69b026e1f0de54c019c9615cc8f80b58133c8b..78d5ef737d2a150c52c49ec762383c9a9cc4f030 100644 --- a/GUI/Model/Device/InstrumentItems.cpp +++ b/GUI/Model/Device/InstrumentItems.cpp @@ -371,7 +371,7 @@ void SpecularInstrumentItem::updateToRealData(const DatafileItem* item) if (shape().size() != item->shape().size()) throw std::runtime_error("Specular instrument type is incompatible with passed data shape"); - const auto& dataAxis = item->nativeDatafield()->axis(0); + const auto& dataAxis = item->dataItem()->c_field()->axis(0); scanItem()->updateToData(dataAxis); scanItem()->grazingScanItem()->updateAxIndicators(makeFrame()); } @@ -393,12 +393,7 @@ bool SpecularInstrumentItem::alignedWith(const DatafileItem* item) const if (!instrumentAxis) return false; - if (!item->hasNativeData()) - return false; - - // TODO remove native data from everywhere - // https://jugit.fz-juelich.de/mlz/bornagain/-/issues/331 - const auto& native_axis = item->nativeDatafield()->axis(0); + const auto& native_axis = item->dataItem()->c_field()->axis(0); return *instrumentAxis == native_axis; } diff --git a/GUI/Model/Job/JobItem.cpp b/GUI/Model/Job/JobItem.cpp index c6513972b2e5bda5fc4e2ca13a109ab8fca961dd..cf709399a613dd409a08fbac377d62ed7e695ac3 100644 --- a/GUI/Model/Job/JobItem.cpp +++ b/GUI/Model/Job/JobItem.cpp @@ -664,11 +664,7 @@ void JobItem::updateFileName() if (DataItem* item = simulatedDataItem()) item->setFileName(GUI::Path::intensityDataFileName(jobName(), "jobdata")); - if (DatafileItem* real = realItem()) { + if (DatafileItem* real = realItem()) if (DataItem* item = real->dataItem()) item->setFileName(GUI::Path::intensityDataFileName(jobName(), "refdata")); - - if (DataItem* item = real->nativeDataItem()) - item->setFileName(GUI::Path::intensityDataFileName(identifier(), "nativedata")); - } } diff --git a/GUI/Model/Model/DatafilesModel.cpp b/GUI/Model/Model/DatafilesModel.cpp index e005ec1436666b13289105b16e02468aa36eac59..e0fd2959e481c7058e775be8a6dd3ff0ec1e708c 100644 --- a/GUI/Model/Model/DatafilesModel.cpp +++ b/GUI/Model/Model/DatafilesModel.cpp @@ -37,12 +37,10 @@ DatafilesModel::~DatafilesModel() = default; QVector<DataItem*> DatafilesModel::dataItems() const { QVector<DataItem*> result; - for (auto* realData : realItems()) { + for (auto* realData : realItems()) if (auto* data2DItem = realData->dataItem()) result.push_back(data2DItem); - if (auto* native_data_item = realData->nativeDataItem()) - result.push_back(native_data_item); - } + return result; } diff --git a/GUI/Model/Model/JobModel.cpp b/GUI/Model/Model/JobModel.cpp index 5b386d0a9c2c802f61132441491ca23a194c7f66..3f826bc0832f7b16f727ba10f281e57b414cb0be 100644 --- a/GUI/Model/Model/JobModel.cpp +++ b/GUI/Model/Model/JobModel.cpp @@ -125,14 +125,10 @@ QVector<DataItem*> JobModel::dataItems() const if (auto* dataItem = jobItem->simulatedDataItem()) result.push_back(dataItem); - if (auto* real_data = dynamic_cast<DatafileItem*>(jobItem->realItem())) { + if (auto* real_data = dynamic_cast<DatafileItem*>(jobItem->realItem())) if (auto* data_item = real_data->dataItem()) result.push_back(data_item); - if (auto* native_data = real_data->nativeDataItem()) - result.push_back(native_data); - } } - return result; } diff --git a/GUI/View/Data/DatafilesSelector.cpp b/GUI/View/Data/DatafilesSelector.cpp index 77c87907d92945ecee722928f631f607f8bfff69..85e9b8f5421c227ba33ca41201a4697f8d531623 100644 --- a/GUI/View/Data/DatafilesSelector.cpp +++ b/GUI/View/Data/DatafilesSelector.cpp @@ -297,8 +297,6 @@ void DatafilesSelector::importData1D() realItem->setTheDatafield(*df); setCurrentItem(realItem); - realItem->initNativeData(); - realItem->nativeDataItem()->setDatafield(*df); realItem->updateFileName(); } catch (std::exception& ex) { m_treeModel->removeDataItem(realItem); diff --git a/Tests/Unit/GUI/TestLinkInstrument.cpp b/Tests/Unit/GUI/TestLinkInstrument.cpp index 9d27153acd628f409abf7d1ce717e983b5cd29d8..f76b3f3f3acbd83a8264ec6617df23e7ad0ce361 100644 --- a/Tests/Unit/GUI/TestLinkInstrument.cpp +++ b/Tests/Unit/GUI/TestLinkInstrument.cpp @@ -81,8 +81,6 @@ TEST(TestLinkInstrument, canLinkToSpecular) instrument->scanItem()->grazingScanItem()->selectListScan(); realData->dataItem()->setOriginalDatafield({frame.clonedAxes()}); - realData->initNativeData(); - realData->nativeDataItem()->setOriginalDatafield({frame.clonedAxes()}); ASSERT_TRUE( document.linkInstrumentManager()->canLinkDataToInstrument(realData, identifier, nullptr));