From 01e566e61a45561cff7d800ae310406c1792e494 Mon Sep 17 00:00:00 2001 From: Dominik Holland Date: Mon, 4 Feb 2019 15:14:54 +0100 Subject: ivigenerator: Add the generation of a qmltypes for the simulation API Similar to the frontend QML API, this adds the generation of a qmltypes file for the simulation API, which can be used in the simulation engine. Because QtCreator cannot handle the same import uris in different folder we always need to generate the frontend qmltypes together with the simulation qmltypes in one combined folder structure. For now the qmltypes are moved into the common folder and generated in the frontend and the backend_simulator template to make it easier to include them. Later the same files can be used for the qml_plugin generator. Task-number: AUTOSUITE-743 Change-Id: I49aecf4d158fc46dbc1eac80c707194440c5763f Reviewed-by: Robert Griebl --- .../backend_simulator/backend_simulator.pro | 2 + .../ivivehiclefunctions/ivivehiclefunctions.pro | 2 + src/tools/ivigenerator/common/plugins.qmltypes.tpl | 140 +++++++++++ src/tools/ivigenerator/common/qmldir.tpl | 1 + .../ivigenerator/common/simulation.qmltypes.tpl | 255 +++++++++++++++++++++ src/tools/ivigenerator/ivigenerator.pro | 9 +- .../ivigenerator/templates_backend_simulator.yaml | 8 + .../templates_frontend/plugins.qmltypes.tpl | 140 ----------- .../ivigenerator/templates_frontend/qmldir.tpl | 1 - 9 files changed, 413 insertions(+), 145 deletions(-) create mode 100644 src/tools/ivigenerator/common/plugins.qmltypes.tpl create mode 100644 src/tools/ivigenerator/common/qmldir.tpl create mode 100644 src/tools/ivigenerator/common/simulation.qmltypes.tpl delete mode 100644 src/tools/ivigenerator/templates_frontend/plugins.qmltypes.tpl delete mode 100644 src/tools/ivigenerator/templates_frontend/qmldir.tpl diff --git a/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro b/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro index a65f7d5..c1cc0e1 100644 --- a/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro +++ b/examples/ivicore/qface-ivi-addressbook/backend_simulator/backend_simulator.pro @@ -23,3 +23,5 @@ INSTALLS += target #! [0] RESOURCES += plugin_resource.qrc #! [0] + +QML_IMPORT_PATH = $$OUT_PWD/qml diff --git a/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro b/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro index c2f3ff3..400191c 100644 --- a/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro +++ b/src/plugins/ivivehiclefunctions/ivivehiclefunctions.pro @@ -21,3 +21,5 @@ load(qt_plugin) RESOURCES += \ qml.qrc + +QML_IMPORT_PATH = $$OUT_PWD/qml diff --git a/src/tools/ivigenerator/common/plugins.qmltypes.tpl b/src/tools/ivigenerator/common/plugins.qmltypes.tpl new file mode 100644 index 0000000..cbe086c --- /dev/null +++ b/src/tools/ivigenerator/common/plugins.qmltypes.tpl @@ -0,0 +1,140 @@ +{# +# Copyright (C) 2019 Luxoft Sweden AB +# Contact: https://www.qt.io/licensing/ +# +# This file is part of the QtIvi module of the Qt Toolkit. +# +# $QT_BEGIN_LICENSE:LGPL-QTAS$ +# Commercial License Usage +# Licensees holding valid commercial Qt Automotive Suite 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$ +# +# SPDX-License-Identifier: LGPL-3.0 +#} +{% import 'qtivi_macros.j2' as ivi %} +{% set module_qml_name = (module|qml_type).split('.')[-1]|upperfirst %} + +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated with the QtIvi ivigenerator + +Module { + dependencies: ["QtIvi 1.0"] +{% for interface in module.interfaces %} +{% set class = '{0}'.format(interface) %} +{% if interface.tags.config.zoned %} +{% set base_class = 'QIviAbstractZonedFeature' %} +{% else %} +{% set base_class = 'QIviAbstractFeature' %} +{% endif %} + Component { + name: "{{class}}" + prototype: "{{base_class}}" + exports: ["{{module|qml_type}}/{{interface|qml_type}} {{module.majorVersion}}.{{module.minorVersion}}"] + exportMetaObjectRevisions: [0] +{% for property in interface.properties %} +{% if property.readonly or property.const or property.type.is_model %} +{% set readonly = 'true' %} +{% else %} +{% set readonly = 'false' %} +{% endif %} + Property { name: "{{property}}"; type: "{{property|qml_info_type}}"; isReadonly: {{readonly}} {% if property.type.is_model %}; isPointer: true {% endif %} } +{% endfor %} +{% for property in interface.properties %} + Signal { + name: "{{property}}Changed" + Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } + } +{% endfor %} +{% for signal in interface.signals %} + Signal { + name: "{{signal}}" +{% for parameter in signal.parameters %} + Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } +{% endfor %} + } +{% endfor %} +{% for operation in interface.operations %} + Method { + name: "{{operation}}" +{# TODO: Once QtCreator can also provide the completion for return types we need to reevaluate this #} + type: "QIviPendingReply<{{operation|return_type}}>" +{% for parameter in operation.parameters %} + Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } +{% endfor %} + } +{% endfor %} +{% for property in interface.properties %} +{% if not (property.readonly or property.const or property.type.is_model) %} + Method { + name: "{{property|setter_name}}" + Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } + } +{% endif %} +{% endfor %} + } +{% endfor %} + + Component { + name: "{{module.module_name|upperfirst}}Module" + prototype: "QObject" + exports: ["{{module|qml_type}}/{{module_qml_name}} {{module.majorVersion}}.{{module.minorVersion}}"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] +{% for enum in module.enums %} + Enum { + name: "{{enum|flag_type}}" + values: { +{% for member in enum.members %} + "{{member.name}}": {{member.value}}{% if not loop.last %},{% endif %} + +{% endfor %} + } + } +{% endfor %} +{% for struct in module.structs %} + Method { + name: "{{struct|lowerfirst}}" + type: "{{struct}}" +{% for fields in struct.fields %} + Parameter { name: "{{fields}}"; type: "{{fields|qml_info_type}}" } +{% endfor %} + } +{% endfor %} +{% for struct in module.structs %} + Method { + name: "{{struct|lowerfirst}}" + type: "{{struct}}" + } +{% endfor %} + } +} diff --git a/src/tools/ivigenerator/common/qmldir.tpl b/src/tools/ivigenerator/common/qmldir.tpl new file mode 100644 index 0000000..4ed2cd6 --- /dev/null +++ b/src/tools/ivigenerator/common/qmldir.tpl @@ -0,0 +1 @@ +typeinfo plugins.qmltypes diff --git a/src/tools/ivigenerator/common/simulation.qmltypes.tpl b/src/tools/ivigenerator/common/simulation.qmltypes.tpl new file mode 100644 index 0000000..4ad2f34 --- /dev/null +++ b/src/tools/ivigenerator/common/simulation.qmltypes.tpl @@ -0,0 +1,255 @@ +{# +# Copyright (C) 2019 Luxoft Sweden AB +# Contact: https://www.qt.io/licensing/ +# +# This file is part of the QtIvi module of the Qt Toolkit. +# +# $QT_BEGIN_LICENSE:LGPL-QTAS$ +# Commercial License Usage +# Licensees holding valid commercial Qt Automotive Suite 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$ +# +# SPDX-License-Identifier: LGPL-3.0 +#} +{% import 'qtivi_macros.j2' as ivi %} +{% set module_qml_name = (module|qml_type).split('.')[-1]|upperfirst %} +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated with the QtIvi ivigenerator + +Module { + dependencies: ["QtIvi 1.0"] + Component { + name: "IviSimulator" + prototype: "QIviSimulationGlobalObject" + exports: ["{{module|qml_type}}.simulation/IviSimulator {{module.majorVersion}}.{{module.minorVersion}}"] + isCreatable: false + isSingleton: true + + Property { name: "simulationData"; type: "QVariantMap" } + Method { + name: "findData" + type: "QVariantMap" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "interface"; type: "string" } + } + Method { + name: "initializeDefault" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "defaultValue" + type: "QVariant" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "zone"; type: "string" } + } + Method { + name: "constraint" + type: "string" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "checkSettings" + type: "bool" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "zone"; type: "string" } + } + Method { + name: "parseDomainValue" + type: "QVariant" + Parameter { name: "data"; type: "QVariantMap" } + Parameter { name: "domain"; type: "string" } + Parameter { name: "zone"; type: "string" } + } + } + +{% for interface in module.interfaces %} +{% for property in interface.properties %} +{% if property.type.is_model %} + Component { + name: "{{property|upperfirst}}ModelBackend" + prototype: "{{property|upperfirst}}ModelBackendInterface" + exports: ["{{module|qml_type}}.simulation/{{property|upperfirst}}ModelBackend {{module.majorVersion}}.{{module.minorVersion}}"] + + Property { name: "Base"; type: "{{property|upperfirst}}ModelBackend"; isPointer: true } + + Method { name: "initialize" } + Method { + name: "registerInstance" + Parameter { name: "identifier"; type: "QUuid" } + } + Method { + name: "unregisterInstance" + Parameter { name: "identifier"; type: "QUuid" } + } + Method { + name: "fetchData" + Parameter { name: "identifier"; type: "QUuid" } + Parameter { name: "start"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "insert" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "{{property.type.nested}}" } + } + Method { + name: "remove" + Parameter { name: "index"; type: "int" } + } + Method { + name: "move" + Parameter { name: "currentIndex"; type: "int" } + Parameter { name: "newIndex"; type: "int" } + } + Method { name: "reset" } + Method { + name: "update" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "{{property.type.nested}}" } + } + Method { + name: "at" + type: "{{property.type.nested}}" + Parameter { name: "index"; type: "int" } + } + } + +{% endif %} +{% endfor %} +{% set class = interface %} +{% set interface_zoned = interface.tags.config and interface.tags.config.zoned %} +{% if interface_zoned %} + Component { + name: "{{class}}Zone" + prototype: "{{class}}Zone" + isCreatable: false + exports: ["{{module|qml_type}}.simulation/{{class}}Zone {{module.majorVersion}}.{{module.minorVersion}}"] + exportMetaObjectRevisions: [0] + Property { name: "zones"; type: "QQmlPropertyMap"; isPointer: true } +{% for property in interface.properties %} + Property { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } +{% endfor %} +{% for property in interface.properties %} + Signal { + name: "{{property}}Changed" + Parameter { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } + } +{% endfor %} +{% for property in interface.properties %} + Method { + name: "{{property|setter_name}}" + Parameter { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } + } +{% endfor %} + } +{% endif %} + Component { + name: "{{class}}Backend" + prototype: "{{class}}BackendInterface" + exports: ["{{module|qml_type}}.simulation/{{class}}Backend {{module.majorVersion}}.{{module.minorVersion}}"] + exportMetaObjectRevisions: [0] + Property { name: "Base"; type: "{{class}}Backend"; isPointer: true } +{% for property in interface.properties %} + Property { name: "{{property}}" {% if property.type.is_model %}; type: "{{property|upperfirst}}ModelBackend"; isPointer: true {% else %} ; type: "{{property|qml_info_type}}" {% endif %} } +{% endfor %} +{% for property in interface.properties %} + Signal { + name: "{{property}}Changed" + Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } + } +{% endfor %} +{% for signal in interface.signals %} + Signal { + name: "{{signal}}" +{% for parameter in signal.parameters %} + Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } +{% endfor %} + } +{% endfor %} + Method { name: "initialize" } +{% for operation in interface.operations %} + Method { + name: "{{operation}}" +{# TODO: Once QtCreator can also provide the completion for return types we need to reevaluate this #} + type: "QIviPendingReply<{{operation|return_type}}>" +{% for parameter in operation.parameters %} + Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } +{% endfor %} + } +{% endfor %} +{% for property in interface.properties %} + Method { + name: "{{property|setter_name}}" + Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } + } +{% endfor %} + } +{% endfor %} + + Component { + name: "{{module.module_name|upperfirst}}Module" + prototype: "QObject" + exports: ["{{module|qml_type}}.simulation/{{module_qml_name}} {{module.majorVersion}}.{{module.minorVersion}}"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] +{% for enum in module.enums %} + Enum { + name: "{{enum|flag_type}}" + values: { +{% for member in enum.members %} + "{{member.name}}": {{member.value}}{% if not loop.last %},{% endif %} + +{% endfor %} + } + } +{% endfor %} +{% for struct in module.structs %} + Method { + name: "{{struct|lowerfirst}}" + type: "{{struct}}" +{% for fields in struct.fields %} + Parameter { name: "{{fields}}"; type: "{{fields|qml_info_type}}" } +{% endfor %} + } +{% endfor %} +{% for struct in module.structs %} + Method { + name: "{{struct|lowerfirst}}" + type: "{{struct}}" + } +{% endfor %} + } +} diff --git a/src/tools/ivigenerator/ivigenerator.pro b/src/tools/ivigenerator/ivigenerator.pro index cfd64cc..02afe56 100644 --- a/src/tools/ivigenerator/ivigenerator.pro +++ b/src/tools/ivigenerator/ivigenerator.pro @@ -13,7 +13,10 @@ CONFIG -= debug_and_release common.files += \ common/generated_comment.cpp.tpl \ - common/qtivi_macros.j2 + common/qtivi_macros.j2 \ + common/simulation.qmltypes.tpl \ + common/plugins.qmltypes.tpl \ + common/qmldir.tpl common.path = $$[QT_HOST_BINS]/ivigenerator/common templates_frontend.files += \ @@ -30,9 +33,7 @@ templates_frontend.files += \ templates_frontend/modulefactory.cpp.tpl \ templates_frontend/modulefactory.h.tpl \ templates_frontend/struct.cpp.tpl \ - templates_frontend/struct.h.tpl \ - templates_frontend/plugins.qmltypes.tpl \ - templates_frontend/qmldir.tpl + templates_frontend/struct.h.tpl templates_frontend.path = $$[QT_HOST_BINS]/ivigenerator/templates_frontend templates_backend_simulator.files += \ diff --git a/src/tools/ivigenerator/templates_backend_simulator.yaml b/src/tools/ivigenerator/templates_backend_simulator.yaml index f9749d5..c93f586 100644 --- a/src/tools/ivigenerator/templates_backend_simulator.yaml +++ b/src/tools/ivigenerator/templates_backend_simulator.yaml @@ -14,6 +14,14 @@ generate_rules: template_file: "data.qrc.tpl" - dest_file: "{{srcBase|lower}}.pri" template_file: "plugin.pri.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/simulation/plugins.qmltypes" + template_file: "simulation.qmltypes.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/simulation/qmldir" + template_file: "qmldir.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/plugins.qmltypes" + template_file: "plugins.qmltypes.tpl" + - dest_file: "qml/{{module|qml_type|replace('.', '/')}}/qmldir" + template_file: "qmldir.tpl" interface_rules: - dest_file: '{{interface|lower}}backend.h' template_file: 'backend.h.tpl' diff --git a/src/tools/ivigenerator/templates_frontend/plugins.qmltypes.tpl b/src/tools/ivigenerator/templates_frontend/plugins.qmltypes.tpl deleted file mode 100644 index cbe086c..0000000 --- a/src/tools/ivigenerator/templates_frontend/plugins.qmltypes.tpl +++ /dev/null @@ -1,140 +0,0 @@ -{# -# Copyright (C) 2019 Luxoft Sweden AB -# Contact: https://www.qt.io/licensing/ -# -# This file is part of the QtIvi module of the Qt Toolkit. -# -# $QT_BEGIN_LICENSE:LGPL-QTAS$ -# Commercial License Usage -# Licensees holding valid commercial Qt Automotive Suite 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$ -# -# SPDX-License-Identifier: LGPL-3.0 -#} -{% import 'qtivi_macros.j2' as ivi %} -{% set module_qml_name = (module|qml_type).split('.')[-1]|upperfirst %} - -import QtQuick.tooling 1.2 - -// This file describes the plugin-supplied types contained in the library. -// It is used for QML tooling purposes only. -// -// This file was auto-generated with the QtIvi ivigenerator - -Module { - dependencies: ["QtIvi 1.0"] -{% for interface in module.interfaces %} -{% set class = '{0}'.format(interface) %} -{% if interface.tags.config.zoned %} -{% set base_class = 'QIviAbstractZonedFeature' %} -{% else %} -{% set base_class = 'QIviAbstractFeature' %} -{% endif %} - Component { - name: "{{class}}" - prototype: "{{base_class}}" - exports: ["{{module|qml_type}}/{{interface|qml_type}} {{module.majorVersion}}.{{module.minorVersion}}"] - exportMetaObjectRevisions: [0] -{% for property in interface.properties %} -{% if property.readonly or property.const or property.type.is_model %} -{% set readonly = 'true' %} -{% else %} -{% set readonly = 'false' %} -{% endif %} - Property { name: "{{property}}"; type: "{{property|qml_info_type}}"; isReadonly: {{readonly}} {% if property.type.is_model %}; isPointer: true {% endif %} } -{% endfor %} -{% for property in interface.properties %} - Signal { - name: "{{property}}Changed" - Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } - } -{% endfor %} -{% for signal in interface.signals %} - Signal { - name: "{{signal}}" -{% for parameter in signal.parameters %} - Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } -{% endfor %} - } -{% endfor %} -{% for operation in interface.operations %} - Method { - name: "{{operation}}" -{# TODO: Once QtCreator can also provide the completion for return types we need to reevaluate this #} - type: "QIviPendingReply<{{operation|return_type}}>" -{% for parameter in operation.parameters %} - Parameter { name: "{{parameter}}"; type: "{{parameter|qml_info_type}}" } -{% endfor %} - } -{% endfor %} -{% for property in interface.properties %} -{% if not (property.readonly or property.const or property.type.is_model) %} - Method { - name: "{{property|setter_name}}" - Parameter { name: "{{property}}"; type: "{{property|qml_info_type}}" } - } -{% endif %} -{% endfor %} - } -{% endfor %} - - Component { - name: "{{module.module_name|upperfirst}}Module" - prototype: "QObject" - exports: ["{{module|qml_type}}/{{module_qml_name}} {{module.majorVersion}}.{{module.minorVersion}}"] - isCreatable: false - isSingleton: true - exportMetaObjectRevisions: [0] -{% for enum in module.enums %} - Enum { - name: "{{enum|flag_type}}" - values: { -{% for member in enum.members %} - "{{member.name}}": {{member.value}}{% if not loop.last %},{% endif %} - -{% endfor %} - } - } -{% endfor %} -{% for struct in module.structs %} - Method { - name: "{{struct|lowerfirst}}" - type: "{{struct}}" -{% for fields in struct.fields %} - Parameter { name: "{{fields}}"; type: "{{fields|qml_info_type}}" } -{% endfor %} - } -{% endfor %} -{% for struct in module.structs %} - Method { - name: "{{struct|lowerfirst}}" - type: "{{struct}}" - } -{% endfor %} - } -} diff --git a/src/tools/ivigenerator/templates_frontend/qmldir.tpl b/src/tools/ivigenerator/templates_frontend/qmldir.tpl deleted file mode 100644 index 4ed2cd6..0000000 --- a/src/tools/ivigenerator/templates_frontend/qmldir.tpl +++ /dev/null @@ -1 +0,0 @@ -typeinfo plugins.qmltypes -- cgit v1.2.1