Skip to content
Snippets Groups Projects
Commit 9b130ce7 authored by t.knopff's avatar t.knopff
Browse files

Introduce SessionItem::setGroupPropertyType, a templated version of...

Introduce SessionItem::setGroupPropertyType, a templated version of SessionItem::setGroupProperty, to reduce the need for casting
parent a6cb9b35
No related branches found
No related tags found
1 merge request!92Refactor model: instrument, footprint and background items
...@@ -81,6 +81,8 @@ public: ...@@ -81,6 +81,8 @@ public:
// convenience functions for groups // convenience functions for groups
SessionItem* addGroupProperty(const QString& groupTag, const QString& groupType); SessionItem* addGroupProperty(const QString& groupTag, const QString& groupType);
SessionItem* setGroupProperty(const QString& groupTag, const QString& modelType) const; SessionItem* setGroupProperty(const QString& groupTag, const QString& modelType) const;
template <typename T>
T* setGroupPropertyType(const QString& groupTag);
SessionItem* getGroupItem(const QString& groupName) const; SessionItem* getGroupItem(const QString& groupName) const;
template <typename T> T& groupItem(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) ...@@ -181,6 +183,12 @@ template <typename T> T* SessionItem::addProperty(const QString& tagname)
return property; 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 template <typename T> T& SessionItem::groupItem(const QString& groupName) const
{ {
T* t = dynamic_cast<T*>(getGroupItem(groupName)); T* t = dynamic_cast<T*>(getGroupItem(groupName));
......
...@@ -559,9 +559,8 @@ void TransformFromDomain::setBackground(InstrumentItem* instrument_item, ...@@ -559,9 +559,8 @@ void TransformFromDomain::setBackground(InstrumentItem* instrument_item,
auto p_bg = simulation.background(); auto p_bg = simulation.background();
if (auto p_constant_bg = dynamic_cast<const ConstantBackground*>(p_bg)) { if (auto p_constant_bg = dynamic_cast<const ConstantBackground*>(p_bg)) {
ConstantBackgroundItem* constant_bg_item = ConstantBackgroundItem* constant_bg_item =
dynamic_cast<ConstantBackgroundItem*> instrument_item->setGroupPropertyType<ConstantBackgroundItem>
(instrument_item->setGroupProperty(InstrumentItem::P_BACKGROUND, (InstrumentItem::P_BACKGROUND);
ConstantBackgroundItem::M_TYPE));
double value = p_constant_bg->backgroundValue(); double value = p_constant_bg->backgroundValue();
constant_bg_item->setBackgroundValue(value); constant_bg_item->setBackgroundValue(value);
} else if (dynamic_cast<const PoissonNoiseBackground*>(p_bg)) { } else if (dynamic_cast<const PoissonNoiseBackground*>(p_bg)) {
......
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