diff --git a/GUI/Models/SessionItem.h b/GUI/Models/SessionItem.h index 0ff1ede2fdc4bc3ede0833e8de6c7fe1f9516602..e5f423e37bb660d8df9ac5632913a5fc0b1913e0 100644 --- a/GUI/Models/SessionItem.h +++ b/GUI/Models/SessionItem.h @@ -81,6 +81,8 @@ public: // convenience functions for groups SessionItem* addGroupProperty(const QString& groupTag, const QString& groupType); SessionItem* setGroupProperty(const QString& groupTag, const QString& modelType) const; + template <typename T> + T* setGroupPropertyType(const QString& groupTag); SessionItem* getGroupItem(const QString& groupName) const; template <typename T> T& groupItem(const QString& groupName) const; @@ -181,6 +183,12 @@ template <typename T> T* SessionItem::addProperty(const QString& tagname) return property; } +template <typename T> +T* SessionItem::setGroupPropertyType(const QString& groupTag) +{ + return dynamic_cast<T*>(setGroupProperty(groupTag, T::M_TYPE)); +} + template <typename T> T& SessionItem::groupItem(const QString& groupName) const { T* t = dynamic_cast<T*>(getGroupItem(groupName)); diff --git a/GUI/Models/TransformFromDomain.cpp b/GUI/Models/TransformFromDomain.cpp index 6d60fcb0798206b2ce7e7377b9248c1418371207..fd0c11f0b80811f889ab9de9c42ee8ba18d85380 100644 --- a/GUI/Models/TransformFromDomain.cpp +++ b/GUI/Models/TransformFromDomain.cpp @@ -559,9 +559,8 @@ void TransformFromDomain::setBackground(InstrumentItem* instrument_item, auto p_bg = simulation.background(); if (auto p_constant_bg = dynamic_cast<const ConstantBackground*>(p_bg)) { ConstantBackgroundItem* constant_bg_item = - dynamic_cast<ConstantBackgroundItem*> - (instrument_item->setGroupProperty(InstrumentItem::P_BACKGROUND, - ConstantBackgroundItem::M_TYPE)); + instrument_item->setGroupPropertyType<ConstantBackgroundItem> + (InstrumentItem::P_BACKGROUND); double value = p_constant_bg->backgroundValue(); constant_bg_item->setBackgroundValue(value); } else if (dynamic_cast<const PoissonNoiseBackground*>(p_bg)) {