Commit 3915c77210e491b5d0107f4ffd8ef17498cde3ca
1 parent
6cdd5961
initial implementation of setPropertyRecursive
Showing
5 changed files
with
53 additions
and
0 deletions
openbr/openbr_plugin.cpp
| ... | ... | @@ -717,6 +717,16 @@ void Object::load(QDataStream &stream) |
| 717 | 717 | init(); |
| 718 | 718 | } |
| 719 | 719 | |
| 720 | +bool Object::setPropertyRecursive(const QString & name, QVariant value) | |
| 721 | +{ | |
| 722 | + if (this->metaObject()->indexOfProperty(qPrintable(name)) == -1) | |
| 723 | + return false; | |
| 724 | + | |
| 725 | + qDebug() << "Class: " << metaObject()->className() << "took property" << name; | |
| 726 | + setProperty(name, value); | |
| 727 | + return true; | |
| 728 | +} | |
| 729 | + | |
| 720 | 730 | void Object::setProperty(const QString &name, QVariant value) |
| 721 | 731 | { |
| 722 | 732 | QString type; | ... | ... |
openbr/openbr_plugin.h
| ... | ... | @@ -597,6 +597,8 @@ public: |
| 597 | 597 | QString argument(int index) const; /*!< \brief A string value for the argument at the specified index. */ |
| 598 | 598 | QString description() const; /*!< \brief Returns a string description of the object. */ |
| 599 | 599 | void setProperty(const QString &name, QVariant value); /*!< \brief Overload of QObject::setProperty to handle OpenBR data types. */ |
| 600 | + virtual bool setPropertyRecursive(const QString & name, QVariant value); /*!< \brief Recursive version of setProperty, try to set the property on this object, or its children, returns true if successful. */ | |
| 601 | + | |
| 600 | 602 | static QStringList parse(const QString &string, char split = ','); /*!< \brief Splits the string while respecting lexical scoping of <tt>()</tt>, <tt>[]</tt>, <tt>\<\></tt>, and <tt>{}</tt>. */ |
| 601 | 603 | |
| 602 | 604 | private: | ... | ... |
openbr/plugins/independent.cpp
| ... | ... | @@ -126,6 +126,20 @@ class IndependentTransform : public MetaTransform |
| 126 | 126 | |
| 127 | 127 | QList<Transform*> transforms; |
| 128 | 128 | |
| 129 | + | |
| 130 | + bool setPropertyRecursive(const QString & name, QVariant value) | |
| 131 | + { | |
| 132 | + if (br::Object::setPropertyRecursive(name, value)) | |
| 133 | + return true; | |
| 134 | + | |
| 135 | + if (!transform->setPropertyRecursive(name, value)) | |
| 136 | + return false; | |
| 137 | + | |
| 138 | + for (int i=0;i < transforms.size();i++) { | |
| 139 | + transforms[i]->setPropertyRecursive(name, value); | |
| 140 | + } | |
| 141 | + } | |
| 142 | + | |
| 129 | 143 | void init() |
| 130 | 144 | { |
| 131 | 145 | transforms.clear(); | ... | ... |
openbr/plugins/meta.cpp
| ... | ... | @@ -493,6 +493,12 @@ class LoadStoreTransform : public MetaTransform |
| 493 | 493 | public: |
| 494 | 494 | LoadStoreTransform() : transform(NULL) {} |
| 495 | 495 | |
| 496 | + bool setPropertyRecursive(const QString & name, QVariant value) | |
| 497 | + { | |
| 498 | + if (br::Object::setPropertyRecursive(name, value)) | |
| 499 | + return true; | |
| 500 | + return transform->setPropertyRecursive(name, value); | |
| 501 | + } | |
| 496 | 502 | private: |
| 497 | 503 | void init() |
| 498 | 504 | { | ... | ... |
openbr/plugins/openbr_internal.h
| ... | ... | @@ -201,6 +201,13 @@ public: |
| 201 | 201 | this->trainable = transform->trainable; |
| 202 | 202 | } |
| 203 | 203 | |
| 204 | + bool setPropertyRecursive(const QString & name, QVariant value) | |
| 205 | + { | |
| 206 | + if (br::Object::setPropertyRecursive(name, value)) | |
| 207 | + return true; | |
| 208 | + | |
| 209 | + return transform->setPropertyRecursive(name, value); | |
| 210 | + } | |
| 204 | 211 | }; |
| 205 | 212 | |
| 206 | 213 | /*! |
| ... | ... | @@ -293,6 +300,20 @@ public: |
| 293 | 300 | return output; |
| 294 | 301 | } |
| 295 | 302 | |
| 303 | + bool setPropertyRecursive(const QString & name, QVariant value) | |
| 304 | + { | |
| 305 | + if (br::Object::setPropertyRecursive(name, value)) | |
| 306 | + return true; | |
| 307 | + | |
| 308 | + for (int i=0; i < this->transforms.size();i++) | |
| 309 | + { | |
| 310 | + if (transforms[i]->setPropertyRecursive(name, value)) | |
| 311 | + return true; | |
| 312 | + } | |
| 313 | + return false; | |
| 314 | + } | |
| 315 | + | |
| 316 | + | |
| 296 | 317 | protected: |
| 297 | 318 | bool isTimeVarying; |
| 298 | 319 | ... | ... |