File indexing completed on 2025-03-09 04:06:00

0001 /*
0002  * <one line to give the library's name and an idea of what it does.>
0003  * SPDX-FileCopyrightText: 2013 Dan Leinir Turthra Jensen <admin@leinir.dk>
0004  *
0005  * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006  *
0007  */
0008 
0009 #include "kritasketchplugin.h"
0010 
0011 #include "ColorSelectorItem.h"
0012 #include "CurveEditorItem.h"
0013 #include "DocumentListModel.h"
0014 #include "ColorImageProvider.h"
0015 #include "FiltersCategoryModel.h"
0016 #include "LayerModel.h"
0017 #include "LayerCompositeDetails.h"
0018 #include "PaletteColorsModel.h"
0019 #include "RecentImagesModel.h"
0020 #include "RecentImageImageProvider.h"
0021 #include "RecentFileManager.h"
0022 #include "IconImageProvider.h"
0023 #include "KisMultiFeedRSSModel.h"
0024 #include "FileSystemModel.h"
0025 #include "CompositeOpModel.h"
0026 #include "KeyboardModel.h"
0027 #include "ColorModelModel.h"
0028 #include "ColorDepthModel.h"
0029 #include "ColorProfileModel.h"
0030 #include <TemplatesModel.h>
0031 #include "Theme.h"
0032 
0033 
0034 #include "Constants.h"
0035 #include "Settings.h"
0036 #include "SimpleTouchArea.h"
0037 #include "ToolManager.h"
0038 #include "KritaNamespace.h"
0039 #include "PanelConfiguration.h"
0040 #include "DocumentManager.h"
0041 #include "kis_clipboard.h"
0042 #include "KisSketchView.h"
0043 
0044 #include <QQmlEngine>
0045 #include <QQmlContext>
0046 
0047 
0048 static QObject *provideConstantsObject(QQmlEngine *engine, QJSEngine *scriptEngine)
0049 {
0050     Q_UNUSED(engine);
0051     Q_UNUSED(scriptEngine);
0052 
0053     return new Constants;
0054 }
0055 
0056 static QObject *provideKritaNamespaceObject(QQmlEngine *engine, QJSEngine *scriptEngine)
0057 {
0058     Q_UNUSED(engine);
0059     Q_UNUSED(scriptEngine);
0060 
0061     return new KritaNamespace;
0062 }
0063 
0064 static QObject *provideKritaRssModelObject(QQmlEngine *engine, QJSEngine *scriptEngine)
0065 {
0066     Q_UNUSED(engine);
0067     Q_UNUSED(scriptEngine);
0068 
0069     MultiFeedRssModel *rssModel = new MultiFeedRssModel;
0070     rssModel->addFeed(QLatin1String("https://krita.org/en/feed/"));
0071 
0072     return rssModel;
0073 }
0074 
0075 
0076 void KritaSketchPlugin::registerTypes(const char* uri)
0077 {
0078     Q_UNUSED(uri);
0079     Q_ASSERT(uri == QLatin1String("org.krita.sketch"));
0080     qmlRegisterType<SimpleTouchArea>("org.krita.sketch", 1, 0, "SimpleTouchArea");
0081     qmlRegisterType<ColorSelectorItem>("org.krita.sketch", 1, 0, "ColorSelectorItem");
0082     qmlRegisterType<CurveEditorItem>("org.krita.sketch", 1, 0, "CurveEditorItem");
0083     qmlRegisterType<DocumentListModel>("org.krita.sketch", 1, 0, "DocumentListModel");
0084     qmlRegisterType<PaletteColorsModel>("org.krita.sketch", 1, 0, "PaletteColorsModel");
0085     qmlRegisterType<KisSketchView>("org.krita.sketch", 1, 0, "SketchView");
0086     qmlRegisterType<LayerModel>("org.krita.sketch", 1, 0, "LayerModel");
0087     qmlRegisterType<FiltersCategoryModel>("org.krita.sketch", 1, 0, "FiltersCategoryModel");
0088     qmlRegisterType<RecentImagesModel>("org.krita.sketch", 1, 0, "RecentImagesModel");
0089     qmlRegisterType<FileSystemModel>("org.krita.sketch", 1, 0, "FileSystemModel");
0090     qmlRegisterType<ToolManager>("org.krita.sketch", 1, 0, "ToolManager");
0091     qmlRegisterType<CompositeOpModel>("org.krita.sketch", 1, 0, "CompositeOpModel");
0092     qmlRegisterType<PanelConfiguration>("org.krita.sketch", 1, 0, "PanelConfiguration");
0093     qmlRegisterType<KeyboardModel>("org.krita.sketch", 1, 0, "KeyboardModel");
0094     qmlRegisterType<ColorModelModel>("org.krita.sketch", 1, 0, "ColorModelModel");
0095     qmlRegisterType<ColorDepthModel>("org.krita.sketch", 1, 0, "ColorDepthModel");
0096     qmlRegisterType<ColorProfileModel>("org.krita.sketch", 1, 0, "ColorProfileModel");
0097     qmlRegisterType<Theme>("org.krita.sketch", 1, 0, "Theme");
0098     qmlRegisterType<TemplatesModel>("org.krita.sketch", 1, 0, "TemplatesModel");
0099 
0100     qmlRegisterSingletonType<Constants>("org.krita.sketch", 1, 0, "Constants", provideConstantsObject);
0101     qmlRegisterSingletonType<KritaNamespace>("org.krita.sketch", 1, 0, "Krita", provideKritaNamespaceObject);
0102     qmlRegisterSingletonType<MultiFeedRssModel>("org.krita.sketch", 1, 0, "KritaFeedRssModel", provideKritaRssModelObject);
0103 
0104     qmlRegisterUncreatableType<LayerCompositeDetails>("org.krita.sketch", 1, 0, "LayerCompositeDetails", "This type is returned by the LayerModel class");
0105 }
0106 
0107 void KritaSketchPlugin::initializeEngine(QQmlEngine* engine, const char* uri)
0108 {
0109     Q_UNUSED(uri);
0110     Q_ASSERT(uri == QLatin1String("org.krita.sketch"));
0111 
0112     engine->addImageProvider(QLatin1String("color"), new ColorImageProvider);
0113     engine->addImageProvider(QLatin1String("recentimage"), new RecentImageImageProvider);
0114     engine->addImageProvider(QLatin1String("icon"), new IconImageProvider);
0115 
0116     RecentFileManager *recentFileManager = DocumentManager::instance()->recentFileManager();
0117     engine->rootContext()->setContextProperty("RecentFileManager", recentFileManager);
0118     engine->rootContext()->setContextProperty("KisClipBoard", KisClipboard::instance());
0119     engine->rootContext()->setContextProperty("QMLEngine", engine);
0120     // This would be a problem, but doesn't seem to be used...
0121 //    engine->rootContext()->setContextProperty("View", d->view);
0122 }
0123