summaryrefslogtreecommitdiff
path: root/qface/templates/qface/qtcpp.j2
diff options
context:
space:
mode:
Diffstat (limited to 'qface/templates/qface/qtcpp.j2')
-rw-r--r--qface/templates/qface/qtcpp.j252
1 files changed, 30 insertions, 22 deletions
diff --git a/qface/templates/qface/qtcpp.j2 b/qface/templates/qface/qtcpp.j2
index c2b13db..97e1c8d 100644
--- a/qface/templates/qface/qtcpp.j2
+++ b/qface/templates/qface/qtcpp.j2
@@ -1,34 +1,39 @@
-{%+ macro enum_decl(enum) %}
- enum {{enum}} {
+{%+ macro enum_decl(enum) -%}
+ enum {{enum}}Enum {
{% for member in enum.members %}
{{member.name}} = {{member.value}}{% if not loop.last %},{%endif%}
{% endfor %}
};
- Q_ENUM({{enum}})
+ {% if enum.is_flag %}
+ Q_DECLARE_FLAGS({{enum}}Enums, {{enum}}Enum)
+ Q_FLAG({{enum}}Enum)
+ {% else %}
+ Q_ENUM({{enum}}Enum)
+ {% endif %}
{%- endmacro %}
-{% macro property(property) -%}
-Q_PROPERTY({{property|returnType}} {{property}} READ {{property}} {% if not property.readonly %}WRITE set{{property|upperfirst}} {% endif %}{% if not property.const %}NOTIFY {{property}}Changed{% endif %})
+{% macro property(property, notifiable=True) -%}
+Q_PROPERTY({{property|returnType}} {{property}} READ {{property}} {% if not property.readonly %}WRITE set{{property|upperfirst}}{% endif %}{% if not property.const and notifiable %} NOTIFY {{property}}Changed{% endif %})
{%- endmacro %}
-{% macro property_setter_decl(property) -%}
-virtual void set{{property|upperfirst}}({{ property|parameterType }});
+{% macro property_setter_decl(property, ending=";") -%}
+void set{{property|upperfirst}}({{ property|parameterType }}){{ending}}
{%- endmacro %}
-{% macro property_getter_decl(property) -%}
-virtual {{property|returnType}} {{property}}() const;
+{% macro property_getter_decl(property, ending=";") -%}
+{{property|returnType}} {{property}}() const{{ending}}
{%- endmacro %}
{% macro signal_decl(symbol, postfix="") -%}
void {{symbol}}{{postfix}}({{symbol|parameters}});
{%- endmacro %}
-{% macro property_member_decl(property) %}
+{% macro property_member_decl(property) -%}
{{property|returnType}} m_{{property}};
{%- endmacro %}
-{% macro property_setter_impl(class, property) -%}
+{% macro property_setter_impl(class, property, notifiable=True) -%}
/*!
\qmlproperty {{property.type}} {{class}}::{{property}}
{% with doc = property.comment|parse_doc %}
@@ -40,10 +45,15 @@ void {{symbol}}{{postfix}}({{symbol|parameters}});
void {{class}}::set{{property|upperfirst}}({{ property|parameterType }})
{
+{% if notifiable %}
if (m_{{property}} != {{property}}) {
m_{{property}} = {{property}};
Q_EMIT {{property}}Changed({{property}});
}
+{% else %}
+ m_{{property}} = {{property}};
+{% endif %}
+
}
{%- endmacro %}
@@ -56,7 +66,7 @@ void {{class}}::set{{property|upperfirst}}({{ property|parameterType }})
{%- endmacro %}
-{% macro operation_impl(class, operation) %}
+{% macro operation_impl(class, operation) -%}
/*!
\qmlmethod {{operation.type}} {{class}}::{{operation}}({{operation|parameters}})
{% with doc = operation.comment|parse_doc %}
@@ -72,24 +82,22 @@ void {{class}}::set{{property|upperfirst}}({{ property|parameterType }})
qWarning() << "{{class}}::{{operation}}(...) not implemented";
return {{operation|defaultValue}};
}
-{% endmacro %}
+{%- endmacro %}
-{% macro operation_decl(operation) %}
- virtual {{operation|returnType}} {{operation}}({{operation|parameters}});
-{% endmacro %}
+{% macro operation_decl(operation, ending=";") -%}
+ virtual {{operation|returnType}} {{operation}}({{operation|parameters}}){{ending}}
+{%- endmacro %}
-{% macro autogenerated(prefix="//") %}
+{% macro autogenerated(prefix="//") -%}
{{prefix}} This is an auto-generated file.
{{prefix}} Do not edit! All changes made to it will be lost.
-{% endmacro %}
-
-{% macro preserved(prefix="//") %}
+{%- endmacro %}
+{% macro preserved(prefix="//") -%}
{{prefix}} This is a preserved file.
{{prefix}} Changes will not be overriden by the generator.
{{prefix}} To reset the file you need to delete it first.
-
-{% endmacro %}
+{%- endmacro %}