Skip to content
Snippets Groups Projects
Commit f34b329e authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

ImportRealData now loads simplified data without axes defined as a first step...

ImportRealData now loads simplified data without axes defined as a first step before linking to instrument.
parent 27fd491e
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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;
......
......@@ -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;
}
......@@ -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
......@@ -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()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment