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