aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xsrc/tools/ivigenerator/generate.py12
-rw-r--r--tests/auto/core/ivigenerator/custom-template/custom-test/filters.py53
-rw-r--r--tests/auto/core/ivigenerator/custom-template/custom-test/tst_custom.cpp.tpl1
3 files changed, 66 insertions, 0 deletions
diff --git a/src/tools/ivigenerator/generate.py b/src/tools/ivigenerator/generate.py
index ba6c213..f1cdb90 100755
--- a/src/tools/ivigenerator/generate.py
+++ b/src/tools/ivigenerator/generate.py
@@ -48,6 +48,7 @@ from path import Path
from qface.generator import FileSystem, Generator
from qface.watch import monitor
+from qface.utils import load_filters
import generator.builtin_config as builtin_config
import generator.global_functions as global_functions
@@ -124,6 +125,17 @@ def generate(tplconfig, moduleConfig, annotations, imports, src, dst):
global_functions.register_global_functions(generator)
register_filters(generator)
+ # Add the current path to the module search path
+ # This makes it possible to import our filters.py and friends
+ # from the plugin filters
+ sys.path.append(os.path.join(os.path.dirname(__file__)))
+
+ # Add a module specific extra filter if found
+ extra_filter_path = os.path.dirname(tplconfig) + '/{0}/filters.py'.format(os.path.basename(tplconfig))
+ if os.path.exists(extra_filter_path):
+ extra_filters = load_filters(Path(extra_filter_path))
+ generator.filters = extra_filters
+
validateSystem(srcFile, system)
# Make sure the config tag is available for all our symbols
diff --git a/tests/auto/core/ivigenerator/custom-template/custom-test/filters.py b/tests/auto/core/ivigenerator/custom-template/custom-test/filters.py
new file mode 100644
index 0000000..09dd6e4
--- /dev/null
+++ b/tests/auto/core/ivigenerator/custom-template/custom-test/filters.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python3
+# Copyright (C) 2020 The Qt Company Ltd.
+# 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 json
+import inspect
+
+from qface.idl.domain import Module, Interface, Property, Parameter, Field, Struct
+from qface.helper.generic import lower_first, upper_first
+from qface.helper.qtcpp import Filters
+
+from generator.global_functions import jinja_error, jinja_warning
+from generator.filters import deprecated_filter
+
+def custom_filter(s):
+ jinja_warning("Test calling a function from the ivigenerator within our own filters")
+ return
+
+filters['custom_filter'] = custom_filter
diff --git a/tests/auto/core/ivigenerator/custom-template/custom-test/tst_custom.cpp.tpl b/tests/auto/core/ivigenerator/custom-template/custom-test/tst_custom.cpp.tpl
index 0ae002f..bc07157 100644
--- a/tests/auto/core/ivigenerator/custom-template/custom-test/tst_custom.cpp.tpl
+++ b/tests/auto/core/ivigenerator/custom-template/custom-test/tst_custom.cpp.tpl
@@ -49,6 +49,7 @@ CustomTest::CustomTest()
void CustomTest::initTestCase()
{
QVERIFY(true);
+{% set foo = module|custom_filter %}
qInfo("Test successfully generated from 'custom template'");
}