diff --git a/GUI/coregui/Models/ParameterizedItem.cpp b/GUI/coregui/Models/ParameterizedItem.cpp index d5d9a28ad551a876e88f8f87dbb2cf9685c72629..a20e7d50dcfef38b0552e96c5d290b9c004ecf88 100644 --- a/GUI/coregui/Models/ParameterizedItem.cpp +++ b/GUI/coregui/Models/ParameterizedItem.cpp @@ -69,12 +69,14 @@ void ParameterizedItem::insertChildItem(int row, ParameterizedItem *item) if(row == -1) row = m_children.size(); item->m_parent = this; m_children.insert(row, item); + onChildPropertyChange(); } ParameterizedItem *ParameterizedItem::takeChildItem(int row) { ParameterizedItem *item = m_children.takeAt(row); item->m_parent = 0; + onChildPropertyChange(); return item; } @@ -83,7 +85,7 @@ bool ParameterizedItem::acceptsAsChild(const QString &child_name) const return m_valid_children.contains(child_name); } -// emmits signal on property change +// emits signal on property change bool ParameterizedItem::event(QEvent * e ) { if(e->type() == QEvent::DynamicPropertyChange) { @@ -103,6 +105,7 @@ bool ParameterizedItem::event(QEvent * e ) void ParameterizedItem::onPropertyChange(const QString &name) { // qDebug() << "ParameterizedItem::onPropertyChange()" << modelType() << name; + if (m_parent) m_parent->onChildPropertyChange(); emit propertyChanged(name); } @@ -145,14 +148,18 @@ void ParameterizedItem::setItemPort(ParameterizedItem::PortInfo::Keys nport) void ParameterizedItem::onPropertyItemChanged(const QString & /*propertyName*/) { ParameterizedItem *propertyItem = qobject_cast<ParameterizedItem *>(sender()); - for(QMap<QString, ParameterizedItem *>::iterator it=m_sub_items.begin(); it!= m_sub_items.end(); ++it) { + for(QMap<QString, ParameterizedItem *>::iterator it=m_sub_items.begin(); + it!= m_sub_items.end(); ++it) { if(it.value() == propertyItem) { - FancyGroupProperty_t group_property = getRegisteredProperty(it.key()).value<FancyGroupProperty_t>(); + FancyGroupProperty_t group_property = + getRegisteredProperty(it.key()).value<FancyGroupProperty_t>(); group_property->setValueLabel(propertyItem->getItemLabel()); + if (m_parent) m_parent->onChildPropertyChange(); return; } } - throw GUIHelpers::Error("ParameterizedItem::onPropertyItemChanged() -> Error. No such propertyItem found"); + throw GUIHelpers::Error("ParameterizedItem::onPropertyItemChanged() ->" + " Error. No such propertyItem found"); } @@ -183,7 +190,7 @@ void ParameterizedItem::addPropertyItem(QString name, ParameterizedItem *item) m_sub_items[name] = item; item->m_parent = this; connect(item, SIGNAL(propertyChanged(QString)), this, SLOT(onPropertyItemChanged(QString))); - + onChildPropertyChange(); qDebug() << "ParameterizedItem::addPropertyItem() -> about to leave" << name; } @@ -323,6 +330,11 @@ QStringList ParameterizedItem::getParameterTreeList() const return result; } +void ParameterizedItem::onChildPropertyChange() +{ + if (m_parent) m_parent->onChildPropertyChange(); +} + PropertyAttribute ParameterizedItem::getPropertyAttribute(const QString &name) const { diff --git a/GUI/coregui/Models/ParameterizedItem.h b/GUI/coregui/Models/ParameterizedItem.h index 3eeb08c91bd3e4afcfcf913afd9d7fc58e74b9f7..e7a80a5e092fbf511991f4719b39390830ed0b4d 100644 --- a/GUI/coregui/Models/ParameterizedItem.h +++ b/GUI/coregui/Models/ParameterizedItem.h @@ -69,10 +69,6 @@ public: //! inserts a child item at specified row virtual void insertChildItem(int row, ParameterizedItem *item); - //! swap two child items - void swapChildItems(int row_1, int row_2) - { m_children.swap(row_1, row_2); } - //! take child item (this removes it from the current item) virtual ParameterizedItem *takeChildItem(int row); @@ -128,6 +124,8 @@ public: QStringList getParameterTreeList() const; + virtual void onChildPropertyChange(); + public slots: void onPropertyItemChanged(const QString &propertyName); diff --git a/GUI/coregui/Models/ParticleDistributionItem.cpp b/GUI/coregui/Models/ParticleDistributionItem.cpp index caa57fd0d597d74a9465dbfcfb4662abaebff2c8..9b0e299b6c86738058b471d89733ee072cce0f6e 100644 --- a/GUI/coregui/Models/ParticleDistributionItem.cpp +++ b/GUI/coregui/Models/ParticleDistributionItem.cpp @@ -14,6 +14,7 @@ // ************************************************************************** // #include "ParticleDistributionItem.h" +#include "ParticleItem.h" #include "ComboProperty.h" const QString ParticleDistributionItem::P_DISTRIBUTED_PARAMETER = @@ -45,8 +46,15 @@ ParticleDistributionItem::~ParticleDistributionItem() { } +void ParticleDistributionItem::onChildPropertyChange() +{ + updateParameterList(); + ParameterizedItem::onChildPropertyChange(); +} + void ParticleDistributionItem::updateParameterList() { + if (!isRegisteredProperty(P_DISTRIBUTED_PARAMETER)) return; QVariant par_prop = getRegisteredProperty(P_DISTRIBUTED_PARAMETER); QString selected_par = par_prop.value<ComboProperty>().getValue(); removeRegisteredProperty(P_DISTRIBUTED_PARAMETER); @@ -54,6 +62,7 @@ void ParticleDistributionItem::updateParameterList() if (childItems().size()>0) { QStringList par_names = childItems()[0]->getParameterTreeList(); par_names.prepend(QString("None")); + par_names.removeAll(ParticleItem::P_ABUNDANCE); updated_prop = ComboProperty(par_names); } else { updated_prop << "None"; diff --git a/GUI/coregui/Models/ParticleDistributionItem.h b/GUI/coregui/Models/ParticleDistributionItem.h index 14b9aed421b32533a4294b3503f802c6b5c9cdd4..a93591aca324e3a193424a76efd812a18c51afba 100644 --- a/GUI/coregui/Models/ParticleDistributionItem.h +++ b/GUI/coregui/Models/ParticleDistributionItem.h @@ -30,6 +30,8 @@ public: static const QString P_SIGMA_FACTOR; explicit ParticleDistributionItem(ParameterizedItem *parent=0); ~ParticleDistributionItem(); + + void onChildPropertyChange(); public slots: void updateParameterList(); }; diff --git a/GUI/coregui/Models/ParticleItem.h b/GUI/coregui/Models/ParticleItem.h index bce6bc0e5bf3ec1761f72233162967b903543e46..5a66c00dc89373147d1f3601b9e0ae526d159de6 100644 --- a/GUI/coregui/Models/ParticleItem.h +++ b/GUI/coregui/Models/ParticleItem.h @@ -31,4 +31,3 @@ public: }; #endif // PARTICLEITEM_H -