Skip to content
Snippets Groups Projects
Commit ac7fcc5d authored by Yurov, Dmitry's avatar Yurov, Dmitry
Browse files

DataItem::updateAxesUnits implemented

Redmine: #2051
parent dc6c1f10
No related branches found
No related tags found
No related merge requests found
......@@ -19,9 +19,7 @@
#include "OutputData.h"
#include <QDateTime>
class BasicAxisItem;
class MaskContainerItem;
class ProjectionContainerItem;
class InstrumentItem;
//! Provides common functionality for IntensityDataItem and SpecularDataItem
......@@ -46,6 +44,7 @@ public:
virtual void setXaxisTitle(QString xtitle) = 0;
virtual void setYaxisTitle(QString ytitle) = 0;
virtual void setAxesRangeToData() = 0;
virtual void updateAxesUnits(const InstrumentItem* instrument) = 0;
protected:
DataItem(const QString& modelType);
......
......@@ -17,7 +17,9 @@
#include "BornAgainNamespace.h"
#include "ComboProperty.h"
#include "GUIHelpers.h"
#include "JobItemUtils.h"
#include "MaskItems.h"
#include "MaskUnitsConverter.h"
#include "ProjectionItems.h"
#include "BornAgainNamespace.h"
......@@ -208,6 +210,16 @@ void IntensityDataItem::setAxesRangeToData()
setUpperY(getYmax());
}
void IntensityDataItem::updateAxesUnits(const InstrumentItem* instrument)
{
MaskUnitsConverter converter;
converter.convertToNbins(this);
JobItemUtils::updateDataAxes(this, instrument);
converter.convertFromNbins(this);
}
void IntensityDataItem::setLowerX(double xmin)
{
getItem(P_XAXIS)->setItemValue(BasicAxisItem::P_MIN, xmin);
......
......@@ -91,6 +91,7 @@ public:
void setXaxisTitle(QString xtitle) override;
void setYaxisTitle(QString ytitle) override;
void setAxesRangeToData() override;
void updateAxesUnits(const InstrumentItem* instrument) override;
public slots:
void setLowerX(double xmin);
......
......@@ -83,18 +83,8 @@ JobItem::JobItem() : SessionItem(Constants::JobItemType)
registerTag(T_FIT_SUITE, 1, 1, QStringList() << Constants::FitSuiteType);
mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
if (item->parent() != this || name != DataItem::P_AXES_UNITS)
return;
if (auto intensityItem = dynamic_cast<IntensityDataItem*>(item)) {
MaskUnitsConverter converter;
converter.convertToNbins(intensityItem);
JobItemUtils::updateDataAxes(intensityItem, instrumentItem());
converter.convertFromNbins(intensityDataItem());
} else if (auto specularItem = dynamic_cast<SpecularDataItem*>(item))
JobItemUtils::updateDataAxes(specularItem, instrumentItem());
if (item->parent() == this && name == DataItem::P_AXES_UNITS)
dynamic_cast<DataItem*>(item)->updateAxesUnits(instrumentItem());
});
mapper()->setOnPropertyChange([this](const QString& name) {
......
......@@ -56,26 +56,15 @@ RealDataItem::RealDataItem()
}
);
mapper()->setOnChildPropertyChange(
[this](SessionItem* item, const QString &name)
{
if (item && item->modelType() == Constants::IntensityDataType
&& name == DataItem::P_AXES_UNITS) {
if(!m_linkedInstrument)
return;
mapper()->setActive(false);
MaskUnitsConverter converter;
converter.convertToNbins(intensityDataItem());
JobItemUtils::updateDataAxes(intensityDataItem(), m_linkedInstrument);
converter.convertFromNbins(intensityDataItem());
mapper()->setActive(true);
}
mapper()->setOnChildPropertyChange([this](SessionItem* item, const QString& name) {
auto data_item = dynamic_cast<DataItem*>(item);
if (!data_item || !m_linkedInstrument || name != DataItem::P_AXES_UNITS)
return;
mapper()->setActive(false);
data_item->updateAxesUnits(m_linkedInstrument);
mapper()->setActive(true);
});
}
IntensityDataItem *RealDataItem::intensityDataItem()
......
......@@ -16,7 +16,7 @@
#include "AxesItems.h"
#include "BornAgainNamespace.h"
#include "GUIHelpers.h"
#include "BornAgainNamespace.h"
#include "JobItemUtils.h"
const QString SpecularDataItem::P_TITLE = "Title";
const QString SpecularDataItem::P_XAXIS = "x-axis";
......@@ -145,6 +145,11 @@ void SpecularDataItem::setAxesRangeToData()
setUpperY(getYmax());
}
void SpecularDataItem::updateAxesUnits(const InstrumentItem* instrument)
{
JobItemUtils::updateDataAxes(this, instrument);
}
void SpecularDataItem::setLowerX(double xmin)
{
getItem(P_XAXIS)->setItemValue(BasicAxisItem::P_MIN, xmin);
......
......@@ -19,8 +19,6 @@
class AmplitudeAxisItem;
class BasicAxisItem;
class MaskContainerItem;
class ProjectionContainerItem;
class BA_CORE_API_ SpecularDataItem : public DataItem
{
......@@ -70,6 +68,7 @@ public:
void setXaxisTitle(QString xtitle) override;
void setYaxisTitle(QString ytitle) override;
void setAxesRangeToData() override;
void updateAxesUnits(const InstrumentItem* instrument) override;
public slots:
void setLowerX(double xmin);
......
......@@ -126,14 +126,13 @@ void FitComparisonWidget::subscribeToItem()
m_comparisonController->setItems(realDataItem(), simulatedDataItem());
if (auto diff_item = diffItem()) {
diff_item->mapper()->setOnPropertyChange([this](const QString& name)
{
if (name == DataItem::P_AXES_UNITS) {
JobItemUtils::updateDataAxes(diffItem(), jobItem()->instrumentItem());
}
}, this);
}
if (auto diff_item = diffItem())
diff_item->mapper()->setOnPropertyChange(
[this, diff_item](const QString& name) {
if (name == DataItem::P_AXES_UNITS)
diff_item->updateAxesUnits(jobItem()->instrumentItem());
},
this);
m_propertyWidget->setItem(simulatedDataItem());
}
......
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