Commit 6bb619e7476bde789d987c36da9008e26fb57f63
1 parent
23883f38
cleaned up Object::init
Showing
2 changed files
with
17 additions
and
34 deletions
openbr/openbr_plugin.cpp
| @@ -701,42 +701,27 @@ QStringList Object::parse(const QString &string, char split) | @@ -701,42 +701,27 @@ QStringList Object::parse(const QString &string, char split) | ||
| 701 | /* Object - private methods */ | 701 | /* Object - private methods */ |
| 702 | void Object::init(const File &file_) | 702 | void Object::init(const File &file_) |
| 703 | { | 703 | { |
| 704 | - this->file = file_; | ||
| 705 | - | ||
| 706 | - // Set name | ||
| 707 | - QString name = metaObject()->className(); | ||
| 708 | - if (name.startsWith("br::")) name = name.right(name.size()-4); | ||
| 709 | - | ||
| 710 | - firstAvailablePropertyIdx = metaObject()->propertyCount(); | ||
| 711 | - | ||
| 712 | - const QMetaObject * baseClass = metaObject(); | ||
| 713 | - const QMetaObject * superClass = metaObject()->superClass(); | ||
| 714 | - | ||
| 715 | - while (superClass != NULL) { | ||
| 716 | - const QMetaObject * nextClass = superClass->superClass(); | ||
| 717 | - | ||
| 718 | - // baseClass <- something <- br::Object | ||
| 719 | - // baseClass is the highest class whose properties we can set via positional arguments | ||
| 720 | - if (nextClass && !strcmp(nextClass->className(),"br::Object")) { | 704 | + file = file_; |
| 705 | + | ||
| 706 | + // Determine interfaceName and firstAvailablePropertyIdx | ||
| 707 | + QString interfaceName; | ||
| 708 | + const QMetaObject *baseClass = metaObject(); | ||
| 709 | + while (true) { | ||
| 710 | + if (!strcmp(baseClass->superClass()->className(), "br::Object") /* Special case for classes that inherit directly from br::Object */ || | ||
| 711 | + !strcmp(baseClass->superClass()->superClass()->className(), "br::Object") /* General case for plugins that inherit indirectly from br::Object */) { | ||
| 721 | firstAvailablePropertyIdx = baseClass->propertyOffset(); | 712 | firstAvailablePropertyIdx = baseClass->propertyOffset(); |
| 713 | + interfaceName = QString(baseClass->superClass()->className()).remove("br::"); | ||
| 714 | + break; | ||
| 722 | } | 715 | } |
| 723 | - | ||
| 724 | - QString superClassName = superClass->className(); | ||
| 725 | - | ||
| 726 | - // strip br:: prefix from superclass name | ||
| 727 | - if (superClassName.startsWith("br::")) | ||
| 728 | - superClassName = superClassName.right(superClassName.size()-4); | ||
| 729 | - | ||
| 730 | - // Strip superclass name from base class name (e.g. PipeTransform -> Pipe) | ||
| 731 | - if (name.endsWith(superClassName)) | ||
| 732 | - name = name.left(name.size() - superClassName.size()); | ||
| 733 | - baseClass = superClass; | ||
| 734 | - superClass = superClass->superClass(); | ||
| 735 | - | 716 | + baseClass = baseClass->superClass(); |
| 736 | } | 717 | } |
| 718 | + | ||
| 719 | + // Strip interface name from object name (e.g. PipeTransform -> Pipe) | ||
| 720 | + QString name = QString(metaObject()->className()).remove("br::"); | ||
| 721 | + if (name.endsWith(interfaceName)) name = name.left(name.size() - interfaceName.size()); | ||
| 737 | setObjectName(name); | 722 | setObjectName(name); |
| 738 | 723 | ||
| 739 | - // Reset all properties | 724 | + // Set properties to their default values |
| 740 | for (int i=0; i<metaObject()->propertyCount(); i++) { | 725 | for (int i=0; i<metaObject()->propertyCount(); i++) { |
| 741 | QMetaProperty property = metaObject()->property(i); | 726 | QMetaProperty property = metaObject()->property(i); |
| 742 | if (property.isResettable()) | 727 | if (property.isResettable()) |
openbr/openbr_plugin.h
| @@ -498,9 +498,7 @@ struct TemplateList : public QList<Template> | @@ -498,9 +498,7 @@ struct TemplateList : public QList<Template> | ||
| 498 | class BR_EXPORT Object : public QObject | 498 | class BR_EXPORT Object : public QObject |
| 499 | { | 499 | { |
| 500 | Q_OBJECT | 500 | Q_OBJECT |
| 501 | - | ||
| 502 | - // Index of the first property that can be set via command line arguments | ||
| 503 | - int firstAvailablePropertyIdx; | 501 | + int firstAvailablePropertyIdx; /*!< \brief Index of the first property that can be set via command line arguments. */ |
| 504 | 502 | ||
| 505 | public: | 503 | public: |
| 506 | File file; /*!< \brief The file used to construct the plugin. */ | 504 | File file; /*!< \brief The file used to construct the plugin. */ |