From d4bb32a007a16d2e2b4ed23894c2cf4ca9d66a69 Mon Sep 17 00:00:00 2001 From: Dmitry Yurov <d.yurov@fz-juelich.de> Date: Wed, 24 Oct 2018 13:27:10 +0200 Subject: [PATCH] Fixes for loading saved project Redmine: #2194 --- GUI/coregui/Models/DataViewUtils.cpp | 2 ++ GUI/coregui/Models/InstrumentItems.cpp | 2 ++ GUI/coregui/Models/JobItemUtils.cpp | 2 ++ GUI/coregui/Models/PointwiseAxisItem.cpp | 3 ++- 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/GUI/coregui/Models/DataViewUtils.cpp b/GUI/coregui/Models/DataViewUtils.cpp index 82edd43dccc..5ad35437dd7 100644 --- a/GUI/coregui/Models/DataViewUtils.cpp +++ b/GUI/coregui/Models/DataViewUtils.cpp @@ -27,6 +27,8 @@ AxesUnits selectedUnits(Data1DViewItem* view_item) void DataViewUtils::updateAxesTitle(Data1DViewItem* view_item) { auto converter = getConverter(view_item); + if (!converter) + return; auto current_units = selectedUnits(view_item); view_item->setXaxisTitle(QString::fromStdString(converter->axisName(0, current_units))); if (converter->dimension() > 1) diff --git a/GUI/coregui/Models/InstrumentItems.cpp b/GUI/coregui/Models/InstrumentItems.cpp index a608219ced6..627c12ab280 100644 --- a/GUI/coregui/Models/InstrumentItems.cpp +++ b/GUI/coregui/Models/InstrumentItems.cpp @@ -185,6 +185,8 @@ std::unique_ptr<IUnitConverter> SpecularInstrumentItem::createUnitConverter() co const auto instrument = createInstrument(); auto axis_item = beamItem()->currentInclinationAxisItem(); if (auto pointwise_axis = dynamic_cast<PointwiseAxisItem*>(axis_item)) { + if (!pointwise_axis->containsNonXMLData()) // workaround for loading project + return nullptr; AxesUnits native_units = JobItemUtils::axesUnitsFromName(pointwise_axis->getUnitsLabel()); return std::make_unique<UnitConverter1D>(instrument->getBeam(), *pointwise_axis->getAxis(), native_units); diff --git a/GUI/coregui/Models/JobItemUtils.cpp b/GUI/coregui/Models/JobItemUtils.cpp index 4e74c31fef7..5b4e408f748 100644 --- a/GUI/coregui/Models/JobItemUtils.cpp +++ b/GUI/coregui/Models/JobItemUtils.cpp @@ -93,6 +93,8 @@ void JobItemUtils::setIntensityItemAxesUnits(DataItem* intensityItem, const InstrumentItem* instrumentItem) { const auto converter = DomainObjectBuilder::createUnitConverter(instrumentItem); + if (!converter) + return; setIntensityItemAxesUnits(intensityItem, *converter); } diff --git a/GUI/coregui/Models/PointwiseAxisItem.cpp b/GUI/coregui/Models/PointwiseAxisItem.cpp index 75b506b8401..e1150461ee7 100644 --- a/GUI/coregui/Models/PointwiseAxisItem.cpp +++ b/GUI/coregui/Models/PointwiseAxisItem.cpp @@ -51,6 +51,7 @@ void PointwiseAxisItem::init(const IAxis& axis, const QString& units_label) m_axis = std::unique_ptr<IAxis>(axis.clone()); setItemValue(P_NATIVE_UNITS, units_label); findInstrument(); + updateIndicators(); } const IAxis* PointwiseAxisItem::getAxis() const @@ -87,6 +88,7 @@ bool PointwiseAxisItem::load(const QString& projectDir) return false; m_axis = std::unique_ptr<IAxis>(data->getAxis(0).clone()); + findInstrument(); setLastModified(QDateTime::currentDateTime()); return true; } @@ -132,7 +134,6 @@ void PointwiseAxisItem::findInstrument() while (parent_item && parent_item->modelType() != Constants::SpecularInstrumentType) parent_item = parent_item->parent(); m_instrument = static_cast<SpecularInstrumentItem*>(parent_item); - updateIndicators(); } void PointwiseAxisItem::updateIndicators() -- GitLab