summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2016-12-05 17:27:17 +0100
committerJuergen Bocklage-Ryannel <juergen.bocklage-ryannel@pelagicore.com>2016-12-05 17:27:17 +0100
commit1b68138a7f67101998f5cc6016c218e7a631a37d (patch)
tree5a115dc41303949ea75e1cac742cdc586250ee7e /examples
parenta98033f4cac3247670e2f28cfc7aa3250e64e050 (diff)
downloadqtivi-qface-1b68138a7f67101998f5cc6016c218e7a631a37d.tar.gz
WIP: updating the qtcpp generator
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/qtcpp/generator/qtcpp.py20
-rw-r--r--examples/qtcpp/generator/templates/abstractinterface.cpp38
-rw-r--r--examples/qtcpp/generator/templates/abstractinterface.h47
-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.cpp34
-rw-r--r--examples/qtcpp/generator/templates/interface.h34
-rw-r--r--examples/qtcpp/generator/templates/plugin.cpp6
-rw-r--r--examples/qtcpp/generator/templates/plugin.pro9
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