diff --git a/GUI/coregui/Models/ApplicationModels.cpp b/GUI/coregui/Models/ApplicationModels.cpp index 23380e69a93e30004b663a3b642e3ddcc6fc1fa1..072e41defeda554925f46a25371bdcb857660a67 100644 --- a/GUI/coregui/Models/ApplicationModels.cpp +++ b/GUI/coregui/Models/ApplicationModels.cpp @@ -33,6 +33,7 @@ #include "RealDataItem.h" #include "IntensityDataIOFactory.h" #include "IntensityDataItem.h" +#include "ImportDataAssistant.h" ApplicationModels::ApplicationModels(QObject *parent) : QObject(parent) @@ -233,8 +234,12 @@ void ApplicationModels::createTestRealData() IntensityDataItem *intensityDataItem = dynamic_cast<IntensityDataItem *>( m_realDataModel->insertNewItem(Constants::IntensityDataType, realDataItem->index())); - OutputData<double>* data = IntensityDataIOFactory::readOutputData("/home/pospelov/untitled2.int"); - intensityDataItem->setOutputData(data); + std::unique_ptr<OutputData<double>> data( + IntensityDataIOFactory::readOutputData("/home/pospelov/untitled2.int")); + + ImportDataAssistant assistant; + OutputData<double> *simplified = assistant.createSimlifiedOutputData(*data.get()); + intensityDataItem->setOutputData(simplified); } //! Writes all model in file one by one diff --git a/GUI/coregui/Views/ImportDataView.h b/GUI/coregui/Views/ImportDataView.h index 443c7131ebfce58250df6b9896624967144e4313..dfa0c9b181a0991e5d0aab42afa3913f367aa82c 100644 --- a/GUI/coregui/Views/ImportDataView.h +++ b/GUI/coregui/Views/ImportDataView.h @@ -22,7 +22,6 @@ #include "RealDataMaskWidget.h" class ImportDataToolBar; -//class ItemSelectorWidget; class RealDataModel; class RealDataSelectorWidget; @@ -47,7 +46,6 @@ private: ImportDataToolBar *m_toolBar; Manhattan::MiniSplitter *m_splitter; -// ItemSelectorWidget *m_selectorWidget; RealDataSelectorWidget *m_selectorWidget; // ItemStackPresenter<RealDataMaskWidget> *m_stackedWidget; ItemStackPresenter<RealDataEditorWidget> *m_stackedWidget; diff --git a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp index 85bd71f7b09b8d5ad3a38f0ece05576a3105a805..9cc9c2dfad9e0a9476077f1c75bdd9def9317c38 100644 --- a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp +++ b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.cpp @@ -21,6 +21,7 @@ #include "IntensityDataItem.h" #include "RealDataItem.h" #include "projectmanager.h" +#include "BornAgainNamespace.h" #include <QDebug> #include <QFileDialog> #include <QFileInfo> @@ -51,16 +52,19 @@ OutputData<double> *ImportDataAssistant::importData(QString &baseNameOfLoadedFil if(newImportDir != dirname) AppSvc::projectManager()->setImportDir(newImportDir); - OutputData<double>* result(nullptr); + OutputData<double> *result(nullptr); try { - result = IntensityDataIOFactory::readOutputData(fileName.toStdString()); + std::unique_ptr<OutputData<double>> data( + IntensityDataIOFactory::readOutputData(fileName.toStdString())); + result = createSimlifiedOutputData(*data.get()); } catch (std::exception &ex) { QString message = QString("Error while trying to read file\n\n'%1'\n\n%2") .arg(fileName) .arg(QString::fromStdString(std::string(ex.what()))); QMessageBox::warning(0, "IO Problem", message); } + return result; } @@ -85,3 +89,23 @@ void ImportDataAssistant::saveIntensityData(RealDataItem *realDataItem, const QS *intensityItem->getOutputData(), filename.toStdString()); } } + +//! Creates OutputData with simplified axes [0,nxbin]x[0,nybin]. + +OutputData<double> *ImportDataAssistant::createSimlifiedOutputData(const OutputData<double> &data) +{ + double xmin(0.0), ymin(0.0); + + const IAxis *aX = data.getAxis(BornAgain::X_AXIS_INDEX); + const IAxis *aY = data.getAxis(BornAgain::Y_AXIS_INDEX); + + double xmax = double(aX->getSize()); + double ymax = double(aY->getSize()); + + OutputData<double> *result = new OutputData<double>; + result->addAxis(FixedBinAxis("X [nbins]", aX->getSize(), xmin, xmax)); + result->addAxis(FixedBinAxis("Y [nbins]", aY->getSize(), ymin, ymax)); + result->setRawDataVector(data.getRawDataVector()); + + return result; +} diff --git a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h index b634a6740c77ca80296ecc9fa803a62ca4bac581..86e2f054fc6003adffba91638978d65ad0b82a1e 100644 --- a/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h +++ b/GUI/coregui/Views/ImportDataWidgets/ImportDataAssistant.h @@ -32,6 +32,8 @@ public: static void loadIntensityData(class RealDataItem *realDataItem, const QString &projectDir); static void saveIntensityData(class RealDataItem *realDataItem, const QString &projectDir); + OutputData<double> *createSimlifiedOutputData(const OutputData<double> &data); + }; #endif // IMPORTDATAASSISTANT_H diff --git a/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp b/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp index 879913557004c86b495dd091770d0d5b867a12b9..4f4c9d7a710e93f49632e91dd019aee18a1bea1f 100644 --- a/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp +++ b/GUI/coregui/Views/ImportDataWidgets/ImportDataToolBar.cpp @@ -107,20 +107,35 @@ void ImportDataToolBar::onImportDataAction() Q_ASSERT(m_realDataModel); ImportDataAssistant assistant; QString baseNameOfImportedFile; - if(OutputData<double> *data = assistant.importData(baseNameOfImportedFile)) { + + + std::unique_ptr<OutputData<double>> data(assistant.importData(baseNameOfImportedFile)); + if(data) { RealDataItem *realDataItem = dynamic_cast<RealDataItem *>( - m_realDataModel->insertNewItem(Constants::RealDataType)); + m_realDataModel->insertNewItem(Constants::RealDataType)); realDataItem->setItemName(baseNameOfImportedFile); IntensityDataItem *intensityDataItem = dynamic_cast<IntensityDataItem *>( - m_realDataModel->insertNewItem(Constants::IntensityDataType, realDataItem->index())); - intensityDataItem->setOutputData(data); + m_realDataModel->insertNewItem(Constants::IntensityDataType, realDataItem->index())); + intensityDataItem->setOutputData(data.release()); m_selectionModel->clearSelection(); m_selectionModel->select(realDataItem->index(), QItemSelectionModel::Select); - qDebug() << "baseNameOfImportedFile" << baseNameOfImportedFile; - - matchAxesToInstrument(realDataItem); } + +// if(OutputData<double> *data = assistant.importData(baseNameOfImportedFile)) { +// RealDataItem *realDataItem = dynamic_cast<RealDataItem *>( +// m_realDataModel->insertNewItem(Constants::RealDataType)); +// realDataItem->setItemName(baseNameOfImportedFile); +// IntensityDataItem *intensityDataItem = dynamic_cast<IntensityDataItem *>( +// m_realDataModel->insertNewItem(Constants::IntensityDataType, realDataItem->index())); +// intensityDataItem->setOutputData(data); +// m_selectionModel->clearSelection(); +// m_selectionModel->select(realDataItem->index(), QItemSelectionModel::Select); +// qDebug() << "baseNameOfImportedFile" << baseNameOfImportedFile; + +// //matchAxesToInstrument(realDataItem); +// } + } void ImportDataToolBar::onCloneDataAction()