13 #ifndef __PLUGIN_API_SCOREELEMENT_H__ 14 #define __PLUGIN_API_SCOREELEMENT_H__ 16 #include "libmscore/property.h" 32 enum class Ownership {
48 Q_PROPERTY(
int type READ type)
54 Q_PROPERTY(QString name READ name)
64 : QObject(), _ownership(own), e(_e) {}
69 Ownership ownership()
const {
return _ownership; }
70 void setOwnership(Ownership o) { _ownership = o; }
72 Ms::ScoreElement* element() {
return e; };
73 const Ms::ScoreElement* element()
const {
return e; };
78 QVariant
get(Ms::Pid pid)
const;
79 void set(Ms::Pid pid, QVariant val);
82 Q_INVOKABLE QString userName()
const;
92 template <
class Wrapper,
class T>
93 Wrapper* wrap(T* t, Ownership own = Ownership::SCORE)
95 Wrapper* w = t ?
new Wrapper(t, own) :
nullptr;
97 QQmlEngine::setObjectOwnership(w, QQmlEngine::JavaScriptOwnership);
101 extern ScoreElement* wrap(Ms::ScoreElement* se, Ownership own = Ownership::SCORE);
109 template <
typename T,
class Container>
114 : QQmlListProperty<T>(obj,
const_cast<void*
>(
static_cast<const void*
>(&container)), &count, &at) {};
116 static int count(QQmlListProperty<T>* l) {
return int(static_cast<Container*>(l->data)->size()); }
117 static T* at(QQmlListProperty<T>* l,
int i) {
return wrap<T>(
static_cast<Container*
>(l->data)->at(i), Ownership::SCORE); }
122 template<
typename T,
class Container>
Base class for most of object wrappers exposed to QML.
Definition: scoreelement.h:42
QML access to containers.
Definition: scoreelement.h:110
Definition: cursor.cpp:29