1 | /* |
2 | SPDX-FileCopyrightText: 2018 Eike Hein <hein@kde.org> |
3 | SPDX-FileCopyrightText: 2021 Volker Krause <vkrause@kde.org> |
4 | |
5 | SPDX-License-Identifier: MIT |
6 | */ |
7 | |
8 | #include "kquicksyntaxhighlightingplugin.h" |
9 | #include "kquicksyntaxhighlighter.h" |
10 | |
11 | #include <KSyntaxHighlighting/Definition> |
12 | #include <KSyntaxHighlighting/Repository> |
13 | #include <KSyntaxHighlighting/Theme> |
14 | |
15 | #include <memory> |
16 | |
17 | using namespace KSyntaxHighlighting; |
18 | |
19 | Repository *defaultRepository() |
20 | { |
21 | static std::unique_ptr<Repository> s_instance; |
22 | if (!s_instance) { |
23 | s_instance = std::make_unique<Repository>(); |
24 | } |
25 | return s_instance.get(); |
26 | } |
27 | |
28 | void KQuickSyntaxHighlightingPlugin::registerTypes(const char *uri) |
29 | { |
30 | Q_ASSERT(QLatin1String(uri) == QLatin1String("org.kde.syntaxhighlighting" )); |
31 | qRegisterMetaType<Definition>(); |
32 | qRegisterMetaType<QList<Definition>>(); |
33 | qRegisterMetaType<Theme>(); |
34 | qRegisterMetaType<QList<Theme>>(); |
35 | qmlRegisterType<KQuickSyntaxHighlighter>(uri, versionMajor: 1, versionMinor: 0, qmlName: "SyntaxHighlighter" ); |
36 | qmlRegisterUncreatableMetaObject(staticMetaObject: Definition::staticMetaObject, uri, versionMajor: 1, versionMinor: 0, qmlName: "Definition" , reason: {}); |
37 | qmlRegisterUncreatableMetaObject(staticMetaObject: Theme::staticMetaObject, uri, versionMajor: 1, versionMinor: 0, qmlName: "Theme" , reason: {}); |
38 | qmlRegisterSingletonType<Repository>(uri, versionMajor: 1, versionMinor: 0, typeName: "Repository" , callback: [](auto engine, auto scriptEngine) { |
39 | (void)engine; |
40 | auto repo = defaultRepository(); |
41 | scriptEngine->setObjectOwnership(repo, QJSEngine::CppOwnership); |
42 | return defaultRepository(); |
43 | }); |
44 | } |
45 | |
46 | #include "moc_kquicksyntaxhighlightingplugin.cpp" |
47 | |