diff options
author | Thomas Hartmann <Thomas.Hartmann@theqtcompany.com> | 2016-09-28 16:52:53 +0200 |
---|---|---|
committer | Thomas Hartmann <Thomas.Hartmann@theqtcompany.com> | 2016-10-05 07:49:38 +0000 |
commit | 54765de17916948ef56a3fd1111e8c765c07155a (patch) | |
tree | 333973d100009a70b79daf1a753720e42a209748 /src/quick/designer | |
parent | c6d66f2e88b42079df9c21c10cf8922871932a32 (diff) |
Adding QQuickDesignerSupportMetaInfo::registerMockupObject()
This allows Qt Quick Designer to register a component with a custom parser
that can serve as a mockup for known C++ components registered
in e.g. main.cpp.
In many cases those components are the interface to the C++ backend.
While the C++ components itself are not relevant for the gui designer,
the user has to be able to instantiate gui components that use such C++
components.
Therefore we create mockup components with a custom parser, so all
property assignments are accepted.
Change-Id: I9c25752b0a5f11c2613346ffbbfd10e3b6eb3a6f
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Diffstat (limited to 'src/quick/designer')
5 files changed, 138 insertions, 2 deletions
diff --git a/src/quick/designer/designer.pri b/src/quick/designer/designer.pri index eb2141134d..f87ea4da04 100644 --- a/src/quick/designer/designer.pri +++ b/src/quick/designer/designer.pri @@ -7,7 +7,8 @@ HEADERS += \ designer/qquickdesignersupportproperties_p.h \ designer/qquickdesignersupportmetainfo_p.h \ designer/qqmldesignermetaobject_p.h \ - designer/qquickdesignersupport_p.h + designer/qquickdesignersupport_p.h \ + designer/qquickdesignercustomparserobject_p.h SOURCES += \ designer/qquickdesignercustomobjectdata.cpp \ @@ -18,4 +19,5 @@ SOURCES += \ designer/qquickdesignersupportpropertychanges.cpp \ designer/qquickdesignersupportstates.cpp \ designer/qquickdesignerwindowmanager.cpp \ - designer/qqmldesignermetaobject.cpp + designer/qqmldesignermetaobject.cpp \ + designer/qquickdesignercustomparserobject.cpp diff --git a/src/quick/designer/qquickdesignercustomparserobject.cpp b/src/quick/designer/qquickdesignercustomparserobject.cpp new file mode 100644 index 0000000000..b785abe361 --- /dev/null +++ b/src/quick/designer/qquickdesignercustomparserobject.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtQuick module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qquickdesignercustomparserobject_p.h" + +QT_BEGIN_NAMESPACE + +QQuickDesignerCustomParserObject::QQuickDesignerCustomParserObject() +{ + +} + +void QQuickDesignerCustomParser::verifyBindings(const QV4::CompiledData::Unit *, const QList<const QV4::CompiledData::Binding *> &) +{ + /* Nothing to do we accept anything */ +} + +void QQuickDesignerCustomParser::applyBindings(QObject *, QV4::CompiledData::CompilationUnit *, const QList<const QV4::CompiledData::Binding *> &) +{ + /* Nothing to do we accept anything */ +} + +QT_END_NAMESPACE diff --git a/src/quick/designer/qquickdesignercustomparserobject_p.h b/src/quick/designer/qquickdesignercustomparserobject_p.h new file mode 100644 index 0000000000..06206443b2 --- /dev/null +++ b/src/quick/designer/qquickdesignercustomparserobject_p.h @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the QtQuick module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or any later version approved by the KDE Free +** Qt Foundation. The licenses are as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUICKDESIGNERCUSTOMPARSEROBJECT_H +#define QUICKDESIGNERCUSTOMPARSEROBJECT_H + +#include <QObject> +#include <private/qqmlcustomparser_p.h> + +QT_BEGIN_NAMESPACE + +class QQuickDesignerCustomParserObject : public QObject +{ + Q_OBJECT + +public: + QQuickDesignerCustomParserObject(); +}; + +class QQuickDesignerCustomParser : public QQmlCustomParser +{ +public: + QQuickDesignerCustomParser() + : QQmlCustomParser(AcceptsAttachedProperties | AcceptsSignalHandlers) {} + + void verifyBindings(const QV4::CompiledData::Unit *qmlUnit, const QList<const QV4::CompiledData::Binding *> &props) override; + void applyBindings(QObject *obj, QV4::CompiledData::CompilationUnit *compilationUnit, const QList<const QV4::CompiledData::Binding *> &bindings) override; +}; + +QT_END_NAMESPACE + +#endif // QUICKDESIGNERCUSTOMPARSEROBJECT_H diff --git a/src/quick/designer/qquickdesignersupportmetainfo.cpp b/src/quick/designer/qquickdesignersupportmetainfo.cpp index 27c9814ef1..332ae26bd4 100644 --- a/src/quick/designer/qquickdesignersupportmetainfo.cpp +++ b/src/quick/designer/qquickdesignersupportmetainfo.cpp @@ -37,6 +37,7 @@ ** ****************************************************************************/ +#include "qquickdesignercustomparserobject_p.h" #include "qquickdesignersupportmetainfo_p.h" #include "qqmldesignermetaobject_p.h" @@ -70,5 +71,10 @@ void QQuickDesignerSupportMetaInfo::registerNotifyPropertyChangeCallBack(void (* QQmlDesignerMetaObject::registerNotifyPropertyChangeCallBack(callback); } +void QQuickDesignerSupportMetaInfo::registerMockupObject(const char *uri, int versionMajor, int versionMinor, const char *qmlName) +{ + qmlRegisterCustomType<QQuickDesignerCustomParserObject>(uri, versionMajor, versionMinor, qmlName, new QQuickDesignerCustomParser); +} + QT_END_NAMESPACE diff --git a/src/quick/designer/qquickdesignersupportmetainfo_p.h b/src/quick/designer/qquickdesignersupportmetainfo_p.h index 43cd8e8fb1..344d720d98 100644 --- a/src/quick/designer/qquickdesignersupportmetainfo_p.h +++ b/src/quick/designer/qquickdesignersupportmetainfo_p.h @@ -63,6 +63,7 @@ class Q_QUICK_EXPORT QQuickDesignerSupportMetaInfo public: static bool isSubclassOf(QObject *object, const QByteArray &superTypeName); static void registerNotifyPropertyChangeCallBack(void (*callback)(QObject *, const QQuickDesignerSupport::PropertyName &)); + static void registerMockupObject(const char *uri, int versionMajor, int versionMinor, const char *qmlName); }; QT_END_NAMESPACE |