QmlDesigner: Move effect maker to an independent plugin

Task-number: QDS-10656
Change-Id: I1c1e67d3461650bfaec46ccc10b832effce76ad9
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
Amr Essam
2023-09-15 15:36:15 +03:00
committed by Amr Elsayed
parent a6e8a247b3
commit 7b183a774c
39 changed files with 343 additions and 217 deletions

View File

@@ -112,3 +112,7 @@ add_subdirectory(mcusupport)
add_subdirectory(saferenderer) add_subdirectory(saferenderer)
add_subdirectory(copilot) add_subdirectory(copilot)
add_subdirectory(terminal) add_subdirectory(terminal)
if (WITH_QMLDESIGNER)
add_subdirectory(effectmakernew)
endif()

View File

@@ -0,0 +1,27 @@
find_package(Qt6 OPTIONAL_COMPONENTS Gui Quick ShaderTools)
add_qtc_plugin(EffectMakerNew
CONDITION TARGET QmlDesigner AND TARGET Qt::ShaderTools
PLUGIN_DEPENDS
QtCreator::Core QtCreator::QmlDesigner
DEPENDS
Qt::Core
QtCreator::Utils Qt::CorePrivate Qt::Widgets Qt::Qml Qt::QmlPrivate Qt::Quick Qt::ShaderTools
SOURCES
effectmakerplugin.cpp effectmakerplugin.h
effectmakerwidget.cpp effectmakerwidget.h
effectmakerview.cpp effectmakerview.h
effectmakermodel.cpp effectmakermodel.h
effectmakernodesmodel.cpp effectmakernodesmodel.h
effectmakeruniformsmodel.cpp effectmakeruniformsmodel.h
effectnode.cpp effectnode.h
effectnodescategory.cpp effectnodescategory.h
compositionnode.cpp compositionnode.h
uniform.cpp uniform.h
effectutils.cpp effectutils.h
effectmakercontextobject.cpp effectmakercontextobject.h
shaderfeatures.cpp shaderfeatures.h
syntaxhighlighterdata.cpp syntaxhighlighterdata.h
BUILD_DEFAULT OFF
)

View File

@@ -0,0 +1,15 @@
{
\"Name\" : \"EffectMakerNew\",
\"Version\" : \"$$QTCREATOR_VERSION\",
\"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
\"Revision\" : \"$$QTC_PLUGIN_REVISION\",
\"Vendor\" : \"The Qt Company Ltd\",
\"Copyright\" : \"(C) $$QTCREATOR_COPYRIGHT_YEAR The Qt Company Ltd\",
\"License\" : [ \"Commercial Usage\",
\"\",
\"Licensees holding valid Qt Enterprise licenses may use this plugin in accordance with the Qt Enterprise License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and The Qt Company.\"
],
\"Description\" : \"Plugin for Effect Maker.\",
\"Url\" : \"http://www.qt.io\",
$$dependencyList
}

View File

@@ -12,7 +12,7 @@
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
namespace QmlDesigner { namespace EffectMaker {
CompositionNode::CompositionNode(const QString &qenPath) CompositionNode::CompositionNode(const QString &qenPath)
{ {
@@ -119,4 +119,5 @@ void CompositionNode::parse(const QString &qenPath)
} }
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -7,7 +7,7 @@
#include <QObject> #include <QObject>
namespace QmlDesigner { namespace EffectMaker {
class CompositionNode : public QObject class CompositionNode : public QObject
{ {
@@ -57,4 +57,5 @@ private:
EffectMakerUniformsModel m_unifomrsModel; EffectMakerUniformsModel m_unifomrsModel;
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -9,7 +9,7 @@
#include <nodemetainfo.h> #include <nodemetainfo.h>
#include <rewritingexception.h> #include <rewritingexception.h>
#include <qmldesignerplugin.h> #include <qmldesignerplugin.h>
#include <qmlmodelnodeproxy.h> #include <qmldesigner/components/propertyeditor/qmlmodelnodeproxy.h>
#include <qmlobjectnode.h> #include <qmlobjectnode.h>
#include <qmltimeline.h> #include <qmltimeline.h>
#include <qmltimelinekeyframegroup.h> #include <qmltimelinekeyframegroup.h>
@@ -27,7 +27,7 @@
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
namespace QmlDesigner { namespace EffectMaker {
EffectMakerContextObject::EffectMakerContextObject(QQmlContext *context, QObject *parent) EffectMakerContextObject::EffectMakerContextObject(QQmlContext *context, QObject *parent)
: QObject(parent) : QObject(parent)
@@ -117,7 +117,7 @@ void EffectMakerContextObject::setBackendValues(QQmlPropertyMap *newBackendValue
emit backendValuesChanged(); emit backendValuesChanged();
} }
void EffectMakerContextObject::setModel(Model *model) void EffectMakerContextObject::setModel(QmlDesigner::Model *model)
{ {
m_model = model; m_model = model;
} }
@@ -169,7 +169,7 @@ int EffectMakerContextObject::devicePixelRatio()
QStringList EffectMakerContextObject::allStatesForId(const QString &id) QStringList EffectMakerContextObject::allStatesForId(const QString &id)
{ {
if (m_model && m_model->rewriterView()) { if (m_model && m_model->rewriterView()) {
const QmlObjectNode node = m_model->rewriterView()->modelNodeForId(id); const QmlDesigner::QmlObjectNode node = m_model->rewriterView()->modelNodeForId(id);
if (node.isValid()) if (node.isValid())
return node.allStateNames(); return node.allStateNames();
} }
@@ -182,4 +182,5 @@ bool EffectMakerContextObject::isBlocked(const QString &) const
return false; return false;
} }
} // QmlDesigner } // namespace EffectMaker

View File

@@ -14,7 +14,7 @@
#include <QPoint> #include <QPoint>
#include <QMouseEvent> #include <QMouseEvent>
namespace QmlDesigner { namespace EffectMaker {
class EffectMakerContextObject : public QObject class EffectMakerContextObject : public QObject
{ {
@@ -90,7 +90,7 @@ private:
int m_majorVersion = 1; int m_majorVersion = 1;
QQmlPropertyMap *m_backendValues = nullptr; QQmlPropertyMap *m_backendValues = nullptr;
Model *m_model = nullptr; QmlDesigner::Model *m_model = nullptr;
QPoint m_lastPos; QPoint m_lastPos;
@@ -98,4 +98,5 @@ private:
bool m_selectionChanged = false; bool m_selectionChanged = false;
}; };
} // QmlDesigner } // namespace EffectMaker

View File

@@ -12,7 +12,7 @@
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
namespace QmlDesigner { namespace EffectMaker {
EffectMakerModel::EffectMakerModel(QObject *parent) EffectMakerModel::EffectMakerModel(QObject *parent)
: QAbstractListModel{parent} : QAbstractListModel{parent}
@@ -760,4 +760,5 @@ void EffectMakerModel::setShadersUpToDate(bool UpToDate)
emit shadersUpToDateChanged(); emit shadersUpToDateChanged();
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -9,7 +9,7 @@
#include <QRegularExpression> #include <QRegularExpression>
#include <QStandardItemModel> #include <QStandardItemModel>
namespace QmlDesigner { namespace EffectMaker {
class CompositionNode; class CompositionNode;
class Uniform; class Uniform;
@@ -135,4 +135,5 @@ private:
const QRegularExpression m_spaceReg = QRegularExpression("\\s+"); const QRegularExpression m_spaceReg = QRegularExpression("\\s+");
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -7,7 +7,7 @@
#include <QCoreApplication> #include <QCoreApplication>
namespace QmlDesigner { namespace EffectMaker {
EffectMakerNodesModel::EffectMakerNodesModel(QObject *parent) EffectMakerNodesModel::EffectMakerNodesModel(QObject *parent)
: QAbstractListModel{parent} : QAbstractListModel{parent}
@@ -104,4 +104,5 @@ void EffectMakerNodesModel::resetModel()
endResetModel(); endResetModel();
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -9,7 +9,7 @@
#include <QStandardItemModel> #include <QStandardItemModel>
namespace QmlDesigner { namespace EffectMaker {
class EffectMakerNodesModel : public QAbstractListModel class EffectMakerNodesModel : public QAbstractListModel
{ {
@@ -40,4 +40,5 @@ private:
bool m_probeNodesDir = false; bool m_probeNodesDir = false;
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -0,0 +1,46 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "effectmakerplugin.h"
#include "effectmakerview.h"
#include <coreplugin/actionmanager/actionmanager.h>
#include <coreplugin/actionmanager/actioncontainer.h>
#include <coreplugin/coreconstants.h>
#include <coreplugin/icore.h>
#include <coreplugin/imode.h>
#include <coreplugin/modemanager.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/externaltool.h>
#include <coreplugin/externaltoolmanager.h>
#include <componentcore_constants.h>
#include <designeractionmanager.h>
#include <viewmanager.h>
#include <qmldesigner/dynamiclicensecheck.h>
#include <qmldesignerplugin.h>
#include <modelnodeoperations.h>
#include <QJsonDocument>
#include <QMap>
namespace EffectMaker {
bool EffectMakerPlugin::delayedInitialize()
{
if (m_delayedInitialized)
return true;
auto *designerPlugin = QmlDesigner::QmlDesignerPlugin::instance();
auto &viewManager = designerPlugin->viewManager();
viewManager.registerView(std::make_unique<EffectMakerView>(
QmlDesigner::QmlDesignerPlugin::externalDependenciesForPluginInitializationOnly()));
m_delayedInitialized = true;
return true;
}
} // namespace EffectMaker

View File

@@ -0,0 +1,32 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <extensionsystem/iplugin.h>
#include <utils/process.h>
namespace Core {
class ActionContainer;
class ExternalTool;
}
namespace EffectMaker {
class EffectMakerPlugin : public ExtensionSystem::IPlugin
{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "EffectMakerNew.json")
public:
EffectMakerPlugin() {}
~EffectMakerPlugin() override {}
bool delayedInitialize() override;
private:
bool m_delayedInitialized = false;
};
} // namespace EffectMaker

View File

@@ -7,7 +7,7 @@
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
namespace QmlDesigner { namespace EffectMaker {
EffectMakerUniformsModel::EffectMakerUniformsModel(QObject *parent) EffectMakerUniformsModel::EffectMakerUniformsModel(QObject *parent)
: QAbstractListModel{parent} : QAbstractListModel{parent}
@@ -72,4 +72,5 @@ QList<Uniform *> EffectMakerUniformsModel::uniforms() const
return m_uniforms; return m_uniforms;
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -5,7 +5,7 @@
#include <QStandardItemModel> #include <QStandardItemModel>
namespace QmlDesigner { namespace EffectMaker {
class Uniform; class Uniform;
@@ -42,4 +42,5 @@ private:
QList<Uniform *> m_uniforms; QList<Uniform *> m_uniforms;
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -0,0 +1,83 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "effectmakerview.h"
#include "effectmakerwidget.h"
#include "effectmakernodesmodel.h"
#include "nodeinstanceview.h"
#include "qmldesignerconstants.h"
#include <coreplugin/icore.h>
#include <QQmlContext>
#include <QQmlEngine>
#include <QQuickItem>
#include <QQuickView>
#include <QTimer>
namespace EffectMaker {
EffectMakerContext::EffectMakerContext(QWidget *widget)
: IContext(widget)
{
setWidget(widget);
setContext(Core::Context(QmlDesigner::Constants::C_QMLEFFECTMAKER,
QmlDesigner::Constants::C_QT_QUICK_TOOLS_MENU));
}
void EffectMakerContext::contextHelp(const HelpCallback &callback) const
{
qobject_cast<EffectMakerWidget *>(m_widget)->contextHelp(callback);
}
EffectMakerView::EffectMakerView(QmlDesigner::ExternalDependenciesInterface &externalDependencies)
: AbstractView{externalDependencies}
{
}
EffectMakerView::~EffectMakerView()
{}
bool EffectMakerView::hasWidget() const
{
return true;
}
QmlDesigner::WidgetInfo EffectMakerView::widgetInfo()
{
if (m_widget.isNull()) {
m_widget = new EffectMakerWidget{this};
auto context = new EffectMakerContext(m_widget.data());
Core::ICore::addContextObject(context);
}
return createWidgetInfo(m_widget.data(), "Effect Maker",
QmlDesigner::WidgetInfo::LeftPane, 0, tr("Effect Maker"));
}
void EffectMakerView::customNotification(const AbstractView * /*view*/,
const QString & /*identifier*/,
const QList<QmlDesigner::ModelNode> & /*nodeList*/,
const QList<QVariant> & /*data*/)
{
// TODO
}
void EffectMakerView::modelAttached(QmlDesigner::Model *model)
{
AbstractView::modelAttached(model);
m_widget->effectMakerNodesModel()->loadModel();
m_widget->initView();
}
void EffectMakerView::modelAboutToBeDetached(QmlDesigner::Model *model)
{
AbstractView::modelAboutToBeDetached(model);
}
} // namespace EffectMaker

View File

@@ -0,0 +1,46 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "abstractview.h"
#include <coreplugin/icontext.h>
#include <QPointer>
namespace EffectMaker {
class EffectMakerWidget;
class EffectMakerContext : public Core::IContext
{
Q_OBJECT
public:
EffectMakerContext(QWidget *widget);
void contextHelp(const Core::IContext::HelpCallback &callback) const override;
};
class EffectMakerView : public QmlDesigner::AbstractView
{
public:
EffectMakerView(QmlDesigner::ExternalDependenciesInterface &externalDependencies);
~EffectMakerView() override;
bool hasWidget() const override;
QmlDesigner::WidgetInfo widgetInfo() override;
// AbstractView
void modelAttached(QmlDesigner::Model *model) override;
void modelAboutToBeDetached(QmlDesigner::Model *model) override;
private:
void customNotification(const AbstractView *view, const QString &identifier,
const QList<QmlDesigner::ModelNode> &nodeList, const QList<QVariant> &data) override;
QPointer<EffectMakerWidget> m_widget;
};
} // namespace EffectMaker

View File

@@ -23,7 +23,7 @@
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QQmlEngine> #include <QQmlEngine>
namespace QmlDesigner { namespace EffectMaker {
static QString propertyEditorResourcesPath() static QString propertyEditorResourcesPath()
{ {
@@ -46,21 +46,22 @@ EffectMakerWidget::EffectMakerWidget(EffectMakerView *view)
m_quickWidget->quickWidget()->installEventFilter(this); m_quickWidget->quickWidget()->installEventFilter(this);
// create the inner widget // create the inner widget
m_quickWidget->quickWidget()->setObjectName(Constants::OBJECT_NAME_EFFECT_MAKER); m_quickWidget->quickWidget()->setObjectName(QmlDesigner::Constants::OBJECT_NAME_EFFECT_MAKER);
m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); m_quickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
Theme::setupTheme(m_quickWidget->engine()); QmlDesigner::Theme::setupTheme(m_quickWidget->engine());
m_quickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports"); m_quickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports");
m_quickWidget->setClearColor(Theme::getColor(Theme::Color::QmlDesigner_BackgroundColorDarkAlternate)); m_quickWidget->setClearColor(QmlDesigner::Theme::getColor(
QmlDesigner::Theme::Color::QmlDesigner_BackgroundColorDarkAlternate));
auto layout = new QHBoxLayout(this); auto layout = new QHBoxLayout(this);
layout->setContentsMargins({}); layout->setContentsMargins({});
layout->setSpacing(0); layout->setSpacing(0);
layout->addWidget(m_quickWidget.data()); layout->addWidget(m_quickWidget.data());
setStyleSheet(Theme::replaceCssColors( setStyleSheet(QmlDesigner::Theme::replaceCssColors(
QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css")))); QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"))));
QmlDesignerPlugin::trackWidgetFocusTime(this, Constants::EVENT_EFFECTMAKER_TIME); QmlDesigner::QmlDesignerPlugin::trackWidgetFocusTime(this, QmlDesigner::Constants::EVENT_EFFECTMAKER_TIME);
auto map = m_quickWidget->registerPropertyMap("EffectMakerBackend"); auto map = m_quickWidget->registerPropertyMap("EffectMakerBackend");
map->setProperties({{"effectMakerNodesModel", QVariant::fromValue(m_effectMakerNodesModel.data())}, map->setProperties({{"effectMakerNodesModel", QVariant::fromValue(m_effectMakerNodesModel.data())},
@@ -142,4 +143,5 @@ void EffectMakerWidget::reloadQmlSource()
m_quickWidget->setSource(QUrl::fromLocalFile(effectMakerQmlPath)); m_quickWidget->setSource(QUrl::fromLocalFile(effectMakerQmlPath));
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -3,7 +3,7 @@
#pragma once #pragma once
#include "qmlmodelnodeproxy.h" #include "qmldesigner/components/propertyeditor/qmlmodelnodeproxy.h"
#include <coreplugin/icontext.h> #include <coreplugin/icontext.h>
@@ -11,7 +11,7 @@
class StudioQuickWidget; class StudioQuickWidget;
namespace QmlDesigner { namespace EffectMaker {
class EffectMakerView; class EffectMakerView;
class EffectMakerModel; class EffectMakerModel;
@@ -53,7 +53,8 @@ private:
QPointer<EffectMakerNodesModel> m_effectMakerNodesModel; QPointer<EffectMakerNodesModel> m_effectMakerNodesModel;
QPointer<EffectMakerView> m_effectMakerView; QPointer<EffectMakerView> m_effectMakerView;
QPointer<StudioQuickWidget> m_quickWidget; QPointer<StudioQuickWidget> m_quickWidget;
QmlModelNodeProxy m_backendModelNode; QmlDesigner::QmlModelNodeProxy m_backendModelNode;
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -6,7 +6,7 @@
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
namespace QmlDesigner { namespace EffectMaker {
EffectNode::EffectNode(const QString &qenPath) EffectNode::EffectNode(const QString &qenPath)
: m_qenPath(qenPath) : m_qenPath(qenPath)
@@ -39,4 +39,5 @@ QString EffectNode::qenPath() const
return m_qenPath; return m_qenPath;
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -6,7 +6,7 @@
#include <QObject> #include <QObject>
#include <QUrl> #include <QUrl>
namespace QmlDesigner { namespace EffectMaker {
class EffectNode : public QObject class EffectNode : public QObject
{ {
@@ -31,4 +31,5 @@ private:
QUrl m_iconPath; QUrl m_iconPath;
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -3,7 +3,7 @@
#include "effectnodescategory.h" #include "effectnodescategory.h"
namespace QmlDesigner { namespace EffectMaker {
EffectNodesCategory::EffectNodesCategory(const QString &name, const QList<EffectNode *> &nodes) EffectNodesCategory::EffectNodesCategory(const QString &name, const QList<EffectNode *> &nodes)
: m_name(name), : m_name(name),
@@ -19,4 +19,5 @@ QList<EffectNode *> EffectNodesCategory::nodes() const
return m_categoryNodes; return m_categoryNodes;
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -7,7 +7,7 @@
#include <QObject> #include <QObject>
namespace QmlDesigner { namespace EffectMaker {
class EffectNodesCategory : public QObject class EffectNodesCategory : public QObject
{ {
@@ -27,4 +27,5 @@ private:
QList<EffectNode *> m_categoryNodes; QList<EffectNode *> m_categoryNodes;
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -5,7 +5,7 @@
#include <QJsonArray> #include <QJsonArray>
namespace QmlDesigner { namespace EffectMaker {
QString EffectUtils::codeFromJsonArray(const QJsonArray &codeArray) QString EffectUtils::codeFromJsonArray(const QJsonArray &codeArray)
{ {
@@ -20,4 +20,5 @@ QString EffectUtils::codeFromJsonArray(const QJsonArray &codeArray)
return codeString; return codeString;
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -7,7 +7,7 @@
QT_FORWARD_DECLARE_CLASS(QJsonArray) QT_FORWARD_DECLARE_CLASS(QJsonArray)
namespace QmlDesigner { namespace EffectMaker {
class EffectUtils class EffectUtils
{ {
@@ -17,4 +17,5 @@ public:
static QString codeFromJsonArray(const QJsonArray &codeArray); static QString codeFromJsonArray(const QJsonArray &codeArray);
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -5,7 +5,7 @@
#include <QStringList> #include <QStringList>
#include <QDebug> #include <QDebug>
namespace QmlDesigner { namespace EffectMaker {
ShaderFeatures::ShaderFeatures() ShaderFeatures::ShaderFeatures()
{ {
@@ -77,4 +77,5 @@ void ShaderFeatures::checkLine(const QString &line, Features &features)
features.setFlag(BlurSources, true); features.setFlag(BlurSources, true);
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -6,7 +6,7 @@
#include <QFlags> #include <QFlags>
#include <QString> #include <QString>
namespace QmlDesigner { namespace EffectMaker {
class ShaderFeatures class ShaderFeatures
{ {
@@ -36,4 +36,5 @@ private:
}; };
Q_DECLARE_OPERATORS_FOR_FLAGS(ShaderFeatures::Features) Q_DECLARE_OPERATORS_FOR_FLAGS(ShaderFeatures::Features)
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -3,7 +3,7 @@
#include "syntaxhighlighterdata.h" #include "syntaxhighlighterdata.h"
namespace QmlDesigner { namespace EffectMaker {
static constexpr QByteArrayView shader_arg_names[] { static constexpr QByteArrayView shader_arg_names[] {
{ "gl_Position" }, { "gl_Position" },
@@ -186,5 +186,6 @@ QList<QByteArrayView> SyntaxHighlighterData::reservedFunctionNames()
return { std::begin(shader_function_names), std::end(shader_function_names) }; return { std::begin(shader_function_names), std::end(shader_function_names) };
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -6,7 +6,7 @@
#include <QByteArrayView> #include <QByteArrayView>
#include <QList> #include <QList>
namespace QmlDesigner { namespace EffectMaker {
class SyntaxHighlighterData class SyntaxHighlighterData
{ {
@@ -18,5 +18,6 @@ public:
static QList<QByteArrayView> reservedFunctionNames(); static QList<QByteArrayView> reservedFunctionNames();
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -2,14 +2,14 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "uniform.h" #include "uniform.h"
#include <qmldesignerplugin.h>
#include "propertyeditorvalue.h"
#include <QColor> #include <QColor>
#include <QJsonObject> #include <QJsonObject>
#include <QVector2D> #include <QVector2D>
namespace QmlDesigner { namespace EffectMaker {
Uniform::Uniform(const QJsonObject &propObj) Uniform::Uniform(const QJsonObject &propObj)
{ {
@@ -45,7 +45,7 @@ Uniform::Uniform(const QJsonObject &propObj)
setValueData(value, defaultValue, minValue, maxValue); setValueData(value, defaultValue, minValue, maxValue);
m_backendValue = new PropertyEditorValue(this); m_backendValue = new QmlDesigner::PropertyEditorValue(this);
m_backendValue->setValue(value); m_backendValue->setValue(value);
} }
@@ -321,4 +321,4 @@ QString Uniform::typeToProperty(Uniform::Type type)
return QString(); return QString();
} }
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -6,13 +6,15 @@
#include <QObject> #include <QObject>
#include <QVariant> #include <QVariant>
#include <qmldesigner/components/propertyeditor/propertyeditorvalue.h>
QT_FORWARD_DECLARE_CLASS(QColor) QT_FORWARD_DECLARE_CLASS(QColor)
QT_FORWARD_DECLARE_CLASS(QJsonObject) QT_FORWARD_DECLARE_CLASS(QJsonObject)
QT_FORWARD_DECLARE_CLASS(QVector2D) QT_FORWARD_DECLARE_CLASS(QVector2D)
namespace QmlDesigner { namespace EffectMaker {
class PropertyEditorValue;
class Uniform : public QObject class Uniform : public QObject
{ {
@@ -97,7 +99,7 @@ private:
bool m_useCustomValue = false; bool m_useCustomValue = false;
bool m_enabled = true; bool m_enabled = true;
bool m_enableMipmap = false; bool m_enableMipmap = false;
PropertyEditorValue *m_backendValue = nullptr; QmlDesigner::PropertyEditorValue *m_backendValue = nullptr;
bool operator==(const Uniform &rhs) const noexcept bool operator==(const Uniform &rhs) const noexcept
{ {
@@ -105,4 +107,4 @@ private:
} }
}; };
} // namespace QmlDesigner } // namespace EffectMaker

View File

@@ -709,24 +709,6 @@ extend_qtc_plugin(QmlDesigner
assetslibraryiconprovider.cpp assetslibraryiconprovider.h assetslibraryiconprovider.cpp assetslibraryiconprovider.h
) )
extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX components/effectmaker
SOURCES
effectmakerwidget.cpp effectmakerwidget.h
effectmakerview.cpp effectmakerview.h
effectmakermodel.cpp effectmakermodel.h
effectmakernodesmodel.cpp effectmakernodesmodel.h
effectmakeruniformsmodel.cpp effectmakeruniformsmodel.h
effectnode.cpp effectnode.h
effectnodescategory.cpp effectnodescategory.h
compositionnode.cpp compositionnode.h
uniform.cpp uniform.h
effectutils.cpp effectutils.h
effectmakercontextobject.cpp effectmakercontextobject.h
shaderfeatures.cpp shaderfeatures.h
syntaxhighlighterdata.cpp syntaxhighlighterdata.h
)
extend_qtc_plugin(QmlDesigner extend_qtc_plugin(QmlDesigner
SOURCES_PREFIX components/navigator SOURCES_PREFIX components/navigator
SOURCES SOURCES

View File

@@ -16,7 +16,6 @@
#include <designeractionmanagerview.h> #include <designeractionmanagerview.h>
#include <designmodewidget.h> #include <designmodewidget.h>
#include <edit3dview.h> #include <edit3dview.h>
#include <effectmakerview.h>
#include <formeditorview.h> #include <formeditorview.h>
#include <itemlibraryview.h> #include <itemlibraryview.h>
#include <materialbrowserview.h> #include <materialbrowserview.h>
@@ -56,7 +55,6 @@ public:
, contentLibraryView{externalDependencies} , contentLibraryView{externalDependencies}
, componentView{externalDependencies} , componentView{externalDependencies}
, edit3DView{externalDependencies} , edit3DView{externalDependencies}
, effectMakerView{externalDependencies}
, formEditorView{externalDependencies} , formEditorView{externalDependencies}
, textEditorView{externalDependencies} , textEditorView{externalDependencies}
, assetsLibraryView{externalDependencies} , assetsLibraryView{externalDependencies}
@@ -79,7 +77,6 @@ public:
ContentLibraryView contentLibraryView; ContentLibraryView contentLibraryView;
ComponentView componentView; ComponentView componentView;
Edit3DView edit3DView; Edit3DView edit3DView;
EffectMakerView effectMakerView;
FormEditorView formEditorView; FormEditorView formEditorView;
TextEditorView textEditorView; TextEditorView textEditorView;
AssetsLibraryView assetsLibraryView; AssetsLibraryView assetsLibraryView;
@@ -212,9 +209,6 @@ QList<AbstractView *> ViewManager::standardViews() const
.toBool()) .toBool())
list.append(&d->debugView); list.append(&d->debugView);
if (qEnvironmentVariableIsSet("ENABLE_QDS_EFFECTMAKER"))
list.append(&d->effectMakerView);
if (qEnvironmentVariableIsSet("ENABLE_QDS_COLLECTIONVIEW")) if (qEnvironmentVariableIsSet("ENABLE_QDS_COLLECTIONVIEW"))
list.append(&d->collectionView); list.append(&d->collectionView);
@@ -393,9 +387,6 @@ QList<WidgetInfo> ViewManager::widgetInfos() const
widgetInfoList.append(d->textureEditorView.widgetInfo()); widgetInfoList.append(d->textureEditorView.widgetInfo());
widgetInfoList.append(d->statesEditorView.widgetInfo()); widgetInfoList.append(d->statesEditorView.widgetInfo());
if (qEnvironmentVariableIsSet("ENABLE_QDS_EFFECTMAKER"))
widgetInfoList.append(d->effectMakerView.widgetInfo());
if (qEnvironmentVariableIsSet("ENABLE_QDS_COLLECTIONVIEW")) if (qEnvironmentVariableIsSet("ENABLE_QDS_COLLECTIONVIEW"))
widgetInfoList.append(d->collectionView.widgetInfo()); widgetInfoList.append(d->collectionView.widgetInfo());

View File

@@ -1,69 +0,0 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "effectmakerview.h"
#include "effectmakerwidget.h"
#include "effectmakernodesmodel.h"
#include "designmodecontext.h"
#include "nodeinstanceview.h"
#include <coreplugin/icore.h>
#include <QQmlContext>
#include <QQmlEngine>
#include <QQuickItem>
#include <QQuickView>
#include <QTimer>
namespace QmlDesigner {
EffectMakerView::EffectMakerView(ExternalDependenciesInterface &externalDependencies)
: AbstractView{externalDependencies}
{
}
EffectMakerView::~EffectMakerView()
{}
bool EffectMakerView::hasWidget() const
{
return true;
}
WidgetInfo EffectMakerView::widgetInfo()
{
if (m_widget.isNull()) {
m_widget = new EffectMakerWidget{this};
auto context = new Internal::EffectMakerContext(m_widget.data());
Core::ICore::addContextObject(context);
}
return createWidgetInfo(m_widget.data(), "Effect Maker", WidgetInfo::LeftPane, 0, tr("Effect Maker"));
}
void EffectMakerView::customNotification(const AbstractView * /*view*/,
const QString & /*identifier*/,
const QList<ModelNode> & /*nodeList*/,
const QList<QVariant> & /*data*/)
{
// TODO
}
void EffectMakerView::modelAttached(Model *model)
{
AbstractView::modelAttached(model);
// Add some dummy effects data
//m_widget->effectMakerModel()->setEffects({"Drop Shadow", "Colorize", "Fast Blue"}); // TODO
m_widget->effectMakerNodesModel()->loadModel();
m_widget->initView();
}
void EffectMakerView::modelAboutToBeDetached(Model *model)
{
AbstractView::modelAboutToBeDetached(model);
}
} // namespace QmlDesigner

View File

@@ -1,34 +0,0 @@
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "abstractview.h"
#include <QPointer>
namespace QmlDesigner {
class EffectMakerWidget;
class EffectMakerView : public AbstractView
{
public:
EffectMakerView(ExternalDependenciesInterface &externalDependencies);
~EffectMakerView() override;
bool hasWidget() const override;
WidgetInfo widgetInfo() override;
// AbstractView
void modelAttached(Model *model) override;
void modelAboutToBeDetached(Model *model) override;
private:
void customNotification(const AbstractView *view, const QString &identifier,
const QList<ModelNode> &nodeList, const QList<QVariant> &data) override;
QPointer<EffectMakerWidget> m_widget;
};
} // namespace QmlDesigner

View File

@@ -51,7 +51,7 @@ private:
PropertyEditorValue *m_editorValue = nullptr; PropertyEditorValue *m_editorValue = nullptr;
}; };
class PropertyEditorValue : public QObject class QMLDESIGNERCORE_EXPORT PropertyEditorValue : public QObject
{ {
Q_OBJECT Q_OBJECT

View File

@@ -9,7 +9,7 @@
namespace QmlDesigner { namespace QmlDesigner {
class QmlModelNodeProxy : public QObject class QMLDESIGNERCORE_EXPORT QmlModelNodeProxy : public QObject
{ {
Q_OBJECT Q_OBJECT

View File

@@ -6,7 +6,6 @@
#include "collectionwidget.h" #include "collectionwidget.h"
#include "designmodewidget.h" #include "designmodewidget.h"
#include "edit3dwidget.h" #include "edit3dwidget.h"
#include "effectmakerwidget.h"
#include "formeditorwidget.h" #include "formeditorwidget.h"
#include "materialbrowserwidget.h" #include "materialbrowserwidget.h"
#include "navigatorwidget.h" #include "navigatorwidget.h"
@@ -99,18 +98,6 @@ void TextEditorContext::contextHelp(const HelpCallback &callback) const
qobject_cast<TextEditorWidget *>(m_widget)->contextHelp(callback); qobject_cast<TextEditorWidget *>(m_widget)->contextHelp(callback);
} }
EffectMakerContext::EffectMakerContext(QWidget *widget)
: IContext(widget)
{
setWidget(widget);
setContext(Core::Context(Constants::C_QMLEFFECTMAKER, Constants::C_QT_QUICK_TOOLS_MENU));
}
void EffectMakerContext::contextHelp(const HelpCallback &callback) const
{
qobject_cast<EffectMakerWidget *>(m_widget)->contextHelp(callback);
}
CollectionEditorContext::CollectionEditorContext(QWidget *widget) CollectionEditorContext::CollectionEditorContext(QWidget *widget)
: IContext(widget) : IContext(widget)
{ {

View File

@@ -74,15 +74,6 @@ public:
void contextHelp(const Core::IContext::HelpCallback &callback) const override; void contextHelp(const Core::IContext::HelpCallback &callback) const override;
}; };
class EffectMakerContext : public Core::IContext
{
Q_OBJECT
public:
EffectMakerContext(QWidget *widget);
void contextHelp(const Core::IContext::HelpCallback &callback) const override;
};
class CollectionEditorContext : public Core::IContext class CollectionEditorContext : public Core::IContext
{ {
Q_OBJECT Q_OBJECT