diff options
author | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2016-12-05 17:27:17 +0100 |
---|---|---|
committer | Juergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com> | 2016-12-05 17:27:17 +0100 |
commit | 1b68138a7f67101998f5cc6016c218e7a631a37d (patch) | |
tree | 5a115dc41303949ea75e1cac742cdc586250ee7e /examples | |
parent | a98033f4cac3247670e2f28cfc7aa3250e64e050 (diff) | |
download | qtivi-qface-1b68138a7f67101998f5cc6016c218e7a631a37d.tar.gz |
WIP: updating the qtcpp generator
Diffstat (limited to 'examples')
-rwxr-xr-x | examples/qtcpp/generator/qtcpp.py | 20 | ||||
-rw-r--r-- | examples/qtcpp/generator/templates/abstractinterface.cpp | 38 | ||||
-rw-r--r-- | examples/qtcpp/generator/templates/abstractinterface.h | 47 | ||||
-rw-r--r-- | examples/qtcpp/generator/templates/generated.pri (renamed from examples/qtcpp/generator/templates/plugin.pri) | 0 | ||||
-rw-r--r-- | examples/qtcpp/generator/templates/interface.cpp | 34 | ||||
-rw-r--r-- | examples/qtcpp/generator/templates/interface.h | 34 | ||||
-rw-r--r-- | examples/qtcpp/generator/templates/plugin.cpp | 6 | ||||
-rw-r--r-- | examples/qtcpp/generator/templates/plugin.pro | 9 |
8 files changed, 113 insertions, 75 deletions
diff --git a/examples/qtcpp/generator/qtcpp.py b/examples/qtcpp/generator/qtcpp.py index 081f05a..b3a068d 100755 --- a/examples/qtcpp/generator/qtcpp.py +++ b/examples/qtcpp/generator/qtcpp.py @@ -65,19 +65,21 @@ def run_generation(input, output): generator.write('{{dst}}/plugin.cpp', 'plugin.cpp', ctx, overwrite=False) generator.write('{{dst}}/plugin.h', 'plugin.h', ctx, overwrite=False) generator.write('{{dst}}/{{module|lower}}.pro', 'plugin.pro', ctx, overwrite=False) - generator.write('{{dst}}/_generated/{{module|lower}}.pri', 'plugin.pri', ctx) - generator.write('{{dst}}/_generated/qml{{module.module_name|lower}}module.h', 'module.h', ctx) - generator.write('{{dst}}/_generated/qml{{module.module_name|lower}}module.cpp', 'module.cpp', ctx) + generator.write('{{dst}}/generated/generated.pri', 'generated.pri', ctx) + generator.write('{{dst}}/generated/qml{{module.module_name|lower}}module.h', 'module.h', ctx) + generator.write('{{dst}}/generated/qml{{module.module_name|lower}}module.cpp', 'module.cpp', ctx) for interface in module.interfaces: ctx.update({'interface': interface}) - generator.write('{{dst}}/_generated/qmlabstract{{interface|lower}}.h', 'interface.h', ctx) - generator.write('{{dst}}/_generated/qmlabstract{{interface|lower}}.cpp', 'interface.cpp', ctx) + generator.write('{{dst}}/qml{{interface|lower}}.h', 'interface.h', ctx, overwrite=False) + generator.write('{{dst}}/qml{{interface|lower}}.cpp', 'interface.cpp', ctx, overwrite=False) + generator.write('{{dst}}/generated/qmlabstract{{interface|lower}}.h', 'abstractinterface.h', ctx) + generator.write('{{dst}}/generated/qmlabstract{{interface|lower}}.cpp', 'abstractinterface.cpp', ctx) for struct in module.structs: ctx.update({'struct': struct}) - generator.write('{{dst}}/_generated/qml{{struct|lower}}.h', 'struct.h', ctx) - generator.write('{{dst}}/_generated/qml{{struct|lower}}.cpp', 'struct.cpp', ctx) - generator.write('{{dst}}/_generated/qml{{struct|lower}}model.h', 'structmodel.h', ctx) - generator.write('{{dst}}/_generated/qml{{struct|lower}}model.cpp', 'structmodel.cpp', ctx) + generator.write('{{dst}}/generated/qml{{struct|lower}}.h', 'struct.h', ctx) + generator.write('{{dst}}/generated/qml{{struct|lower}}.cpp', 'struct.cpp', ctx) + generator.write('{{dst}}/generated/qml{{struct|lower}}model.h', 'structmodel.h', ctx) + generator.write('{{dst}}/generated/qml{{struct|lower}}model.cpp', 'structmodel.cpp', ctx) @click.command() diff --git a/examples/qtcpp/generator/templates/abstractinterface.cpp b/examples/qtcpp/generator/templates/abstractinterface.cpp new file mode 100644 index 0000000..9bf6ec7 --- /dev/null +++ b/examples/qtcpp/generator/templates/abstractinterface.cpp @@ -0,0 +1,38 @@ +{# Copyright (c) Pelagicore AB 2016 #} +{% set class = 'QmlAbstract{0}'.format(interface) %} +/**************************************************************************** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +****************************************************************************/ + +#include "{{class|lower}}.h" + +#include <QtQml> + +{{interface.comment}} +{{class}}::{{class}}(QObject *parent) + : QObject(parent) +{ +{% for property in interface.properties %} +{% if property.type.is_model %} + m_{{property}} = new {{property.type.nested}}Model(this); +{% endif %} +{% endfor %} +} + +{% for property in interface.properties %} +void {{class}}::set{{property|upperfirst}}({{ property|parameterType }}) +{ + if(m_{{property}} == {{property}}) { + return; + } + m_{{property}} = {{property}}; + emit {{property}}Changed({{property}}); +} + +{{property|returnType}} {{class}}::{{property}}() const +{ + return m_{{property}}; +} + +{% endfor %} diff --git a/examples/qtcpp/generator/templates/abstractinterface.h b/examples/qtcpp/generator/templates/abstractinterface.h new file mode 100644 index 0000000..aac9ac8 --- /dev/null +++ b/examples/qtcpp/generator/templates/abstractinterface.h @@ -0,0 +1,47 @@ +{# Copyright (c) Pelagicore AB 2016 #} +{% set class = 'QmlAbstract{0}'.format(interface) %} +/**************************************************************************** +** This is an auto-generated file. +** Do not edit! All changes made to it will be lost. +****************************************************************************/ + +#pragma once + +#include <QtCore> + +#include "qml{{module.module_name|lower}}module.h" + +class {{class}} : public QObject +{ + Q_OBJECT +{% for property in interface.properties %} + Q_PROPERTY({{property|returnType}} {{property}} READ {{property}} {%if not property.is_readonly%}WRITE set{{property|upperfirst}} {%endif%}NOTIFY {{property}}Changed) +{% endfor %} + +public: + {{class}}(QObject *parent=0); + +{%- for operation in interface.operations %} + virtual {{operation|returnType}} {{operation}}({{operation.parameters|map('parameterType')|join(', ')}}) = 0; +{% endfor %} + +public Q_SLOTS: +{% for property in interface.properties %} + void set{{property|upperfirst}}({{ property|parameterType }}); +{% endfor %} + +public: +{% for property in interface.properties %} + {{property|returnType}} {{property}}() const; +{% endfor %} + +Q_SIGNALS: +{% for property in interface.properties %} + void {{property}}Changed({{property|parameterType}}); +{% endfor %} + +private: +{% for property in interface.properties %} + {{property|returnType}} m_{{property}}; +{% endfor %} +}; diff --git a/examples/qtcpp/generator/templates/plugin.pri b/examples/qtcpp/generator/templates/generated.pri index 31f9aac..31f9aac 100644 --- a/examples/qtcpp/generator/templates/plugin.pri +++ b/examples/qtcpp/generator/templates/generated.pri diff --git a/examples/qtcpp/generator/templates/interface.cpp b/examples/qtcpp/generator/templates/interface.cpp index 089905f..3e94c47 100644 --- a/examples/qtcpp/generator/templates/interface.cpp +++ b/examples/qtcpp/generator/templates/interface.cpp @@ -1,5 +1,5 @@ {# Copyright (c) Pelagicore AB 2016 #} -{% set class = 'QmlAbstract{0}'.format(interface) %} +{% set class = 'Qml{0}'.format(interface) %} /**************************************************************************** ** This is an auto-generated file. ** Do not edit! All changes made to it will be lost. @@ -11,41 +11,11 @@ {{interface.comment}} {{class}}::{{class}}(QObject *parent) - : QObject(parent) + : QmlAbstract{{interface}}(parent) { -{% for property in interface.properties %} -{% if property.type.is_model %} - m_{{property}} = new {{property.type.nested}}Model(this); -{% endif %} -{% endfor %} } void {{class}}::registerQmlTypes(const QString& uri, int majorVersion, int minorVersion) { qmlRegisterType<{{class}}>(uri.toLatin1(), majorVersion, minorVersion, "{{interface}}"); } - -{% for property in interface.properties %} -void {{class}}::set{{property|upperfirst}}({{ property|parameterType }}) -{ - if(m_{{property}} == {{property}}) { - return; - } - m_{{property}} = {{property}}; - emit {{property}}Changed({{property}}); -} - -{{property|returnType}} {{class}}::{{property}}() const -{ - return m_{{property}}; -} - -{% endfor %} - -{% for operation in interface.operations %} -{{operation.comment}} -{{operation|returnType}} {{class}}::{{operation}}({{operation.parameters|map('parameterType')|join(', ')}}) -{ - qWarning() << "Not implemented: {{class}}::{{operation}}(...)"; -} -{% endfor %} diff --git a/examples/qtcpp/generator/templates/interface.h b/examples/qtcpp/generator/templates/interface.h index 97ccbd0..0d957e8 100644 --- a/examples/qtcpp/generator/templates/interface.h +++ b/examples/qtcpp/generator/templates/interface.h @@ -1,5 +1,5 @@ {# Copyright (c) Pelagicore AB 2016 #} -{% set class = 'QmlAbstract{0}'.format(interface) %} +{% set class = 'Qml{0}'.format(interface) %} /**************************************************************************** ** This is an auto-generated file. ** Do not edit! All changes made to it will be lost. @@ -9,40 +9,14 @@ #include <QtCore> -#include "qml{{module.module_name|lower}}module.h" +#include "generated/qml{{module.module_name|lower}}module.h" +#include "generated/qmlabstract{{interface|lower}}.h" -class {{class}} : public QObject +class {{class}} : public QmlAbstract{{interface}} { Q_OBJECT -{% for property in interface.properties %} - Q_PROPERTY({{property|returnType}} {{property}} READ {{property}} {%if not property.is_readonly%}WRITE set{{property|upperfirst}} {%endif%}NOTIFY {{property}}Changed) -{% endfor %} - public: {{class}}(QObject *parent=0); static void registerQmlTypes(const QString& uri, int majorVersion=1, int minorVersion=0); - -public Q_SLOTS: -{%- for operation in interface.operations %} - {{operation|returnType}} {{operation}}({{operation.parameters|map('parameterType')|join(', ')}}); -{% endfor %} -{% for property in interface.properties %} - void set{{property|upperfirst}}({{ property|parameterType }}); -{% endfor %} - -public: -{% for property in interface.properties %} - {{property|returnType}} {{property}}() const; -{% endfor %} - -Q_SIGNALS: -{% for property in interface.properties %} - void {{property}}Changed({{property|parameterType}}); -{% endfor %} - -private: -{% for property in interface.properties %} - {{property|returnType}} m_{{property}}; -{% endfor %} }; diff --git a/examples/qtcpp/generator/templates/plugin.cpp b/examples/qtcpp/generator/templates/plugin.cpp index 4d222a3..aa8fb9a 100644 --- a/examples/qtcpp/generator/templates/plugin.cpp +++ b/examples/qtcpp/generator/templates/plugin.cpp @@ -9,10 +9,10 @@ #include <qqml.h> -#include "{{module_name|lower}}.h" +#include "generated/{{module_name|lower}}.h" {% for interface in module.interfaces %} -#include "qmlabstract{{interface|lower}}.h" +#include "qml{{interface|lower}}.h" {% endfor %} void Plugin::registerTypes(const char *uri) @@ -21,6 +21,6 @@ void Plugin::registerTypes(const char *uri) // @uri {{module|lower}} {{module_name}}::registerQmlTypes(uri, 1, 0); {% for interface in module.interfaces %} - QmlAbstract{{interface}}::registerQmlTypes(uri, 1, 0); + Qml{{interface}}::registerQmlTypes(uri, 1, 0); {% endfor %} } diff --git a/examples/qtcpp/generator/templates/plugin.pro b/examples/qtcpp/generator/templates/plugin.pro index 70e1a4f..00c9d6e 100644 --- a/examples/qtcpp/generator/templates/plugin.pro +++ b/examples/qtcpp/generator/templates/plugin.pro @@ -13,13 +13,20 @@ uri = {{module}} HEADERS += \ +{% for interface in module.interfaces %} + qml{{interface|lower}}.h \ +{% endfor %} plugin.h SOURCES += \ +{% for interface in module.interfaces %} + qml{{interface|lower}}.cpp \ +{% endfor %} plugin.cpp -include( _generated/{{module|lower}}.pri ) + +include( generated/generated.pri ) DISTFILES = qmldir |