diff --git a/GUI/Model/Material/MaterialItem.cpp b/GUI/Model/Material/MaterialItem.cpp index 32947f389d0c37abad382e6e02ebde120a13b5e2..ee8a0a25b7dcbd340a1d499b565aefae933d168d 100644 --- a/GUI/Model/Material/MaterialItem.cpp +++ b/GUI/Model/Material/MaterialItem.cpp @@ -95,7 +95,7 @@ DoubleDescriptor MaterialItem::delta() DoubleDescriptor d( "Delta", "Delta of refractive index (n = 1 - delta + i*beta)", 3, RealLimits::limitless(), setter, [=] { return m_delta; }, Unit::unitless); - d.path = [=] { return GUI::Model::Path::getPathFromItem(this) + "/delta"; }; + d.path = [=] { return uidForDescriptor("delta"); }; return d; } @@ -112,7 +112,7 @@ DoubleDescriptor MaterialItem::beta() DoubleDescriptor d( "Beta", "Beta of refractive index (n = 1 - delta + i*beta)", 3, RealLimits::limitless(), setter, [=] { return m_beta; }, Unit::unitless); - d.path = [=] { return GUI::Model::Path::getPathFromItem(this) + "/beta"; }; + d.path = [=] { return uidForDescriptor("beta"); }; return d; } @@ -129,7 +129,7 @@ DoubleDescriptor MaterialItem::sldRe() DoubleDescriptor d( "SLD, real", "Real part of SLD (SLD = real - i*imag), AA^{-2}", 3, RealLimits::limitless(), setter, [=] { return m_real; }, Unit::unitless); - d.path = [=] { return GUI::Model::Path::getPathFromItem(this) + "/re"; }; + d.path = [=] { return uidForDescriptor("re"); }; return d; } @@ -146,7 +146,7 @@ DoubleDescriptor MaterialItem::sldIm() DoubleDescriptor d( "SLD, imaginary", "Imaginary part of SLD (SLD = real - i*imag), AA^{-2}", 3, RealLimits::limitless(), setter, [=] { return m_imag; }, Unit::unitless); - d.path = [=] { return GUI::Model::Path::getPathFromItem(this) + "/im"; }; + d.path = [=] { return uidForDescriptor("im"); }; return d; } @@ -161,7 +161,7 @@ VectorDescriptor MaterialItem::magnetizationVector() } }; d.x.get = [=]() { return m_magnetization.x(); }; - d.x.path = [=] { return GUI::Model::Path::getPathFromItem(this) + "/mx"; }; + d.x.path = [=] { return uidForDescriptor("mx"); }; d.y.set = [=](double v) { if (m_magnetization.y() != v) { @@ -170,7 +170,7 @@ VectorDescriptor MaterialItem::magnetizationVector() } }; d.y.get = [=]() { return m_magnetization.y(); }; - d.y.path = [=] { return GUI::Model::Path::getPathFromItem(this) + "/my"; }; + d.y.path = [=] { return uidForDescriptor("my"); }; d.z.set = [=](double v) { if (m_magnetization.z() != v) { @@ -179,7 +179,7 @@ VectorDescriptor MaterialItem::magnetizationVector() } }; d.z.get = [=]() { return m_magnetization.z(); }; - d.z.path = [=] { return GUI::Model::Path::getPathFromItem(this) + "/mz"; }; + d.z.path = [=] { return uidForDescriptor("mz"); }; return d; } @@ -308,6 +308,11 @@ void MaterialItem::updateFrom(const MaterialItem& other) } } +QString MaterialItem::uidForDescriptor(const QString& lastPart) const +{ + return "material/" + identifier() + "/" + lastPart; +} + bool MaterialItem::operator!=(const MaterialItem& other) const { return !operator==(other); diff --git a/GUI/Model/Material/MaterialItem.h b/GUI/Model/Material/MaterialItem.h index bd68c9622d1c176b6b6280e0dc22eec88847351d..c94074f1eadf07e5c0ab3a939aa648487654dbc8 100644 --- a/GUI/Model/Material/MaterialItem.h +++ b/GUI/Model/Material/MaterialItem.h @@ -88,6 +88,12 @@ public: //! emits dataChanged, if differences exist. void updateFrom(const MaterialItem& other); +private: + //! Returns a unique identifier for descriptors. + //! + //! lastPart will be attached to identify the relevant descriptor. + QString uidForDescriptor(const QString& lastPart) const; + signals: void dataChanged() const; diff --git a/GUI/Model/Session/ModelPath.cpp b/GUI/Model/Session/ModelPath.cpp index a5076ee19305b80e3a245da17580a6bd917c6dc5..9625e1e7097e623839c1b3dab1521e959db4b4a7 100644 --- a/GUI/Model/Session/ModelPath.cpp +++ b/GUI/Model/Session/ModelPath.cpp @@ -84,8 +84,3 @@ QString GUI::Model::Path::getPathFromItem(SessionItem* item) ASSERT(item->model()); // if assert, item is not completely initialized return getPathFromIndex(item->model()->indexOfItem(item)); } - -QString GUI::Model::Path::getPathFromItem(const MaterialItem* item) -{ - return "material/" + item->identifier(); -} diff --git a/GUI/Model/Session/ModelPath.h b/GUI/Model/Session/ModelPath.h index 8aa4af76a00341e2b77cf7af32d9fc0d55503f43..fdf4a56e62fae3261fe15a921bc9bd93a2e8b22e 100644 --- a/GUI/Model/Session/ModelPath.h +++ b/GUI/Model/Session/ModelPath.h @@ -30,8 +30,6 @@ QString getPathFromIndex(const QModelIndex& index); QString getPathFromItem(SessionItem* item); -QString getPathFromItem(const MaterialItem* item); - QModelIndex getIndexFromPath(const SessionModel* model, const QString& path); bool isValidItem(SessionModel* model, SessionItem* item, const QModelIndex& parent);