forked from qt-creator/qt-creator
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:
@@ -112,3 +112,7 @@ add_subdirectory(mcusupport)
|
||||
add_subdirectory(saferenderer)
|
||||
add_subdirectory(copilot)
|
||||
add_subdirectory(terminal)
|
||||
|
||||
if (WITH_QMLDESIGNER)
|
||||
add_subdirectory(effectmakernew)
|
||||
endif()
|
||||
|
27
src/plugins/effectmakernew/CMakeLists.txt
Normal file
27
src/plugins/effectmakernew/CMakeLists.txt
Normal 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
|
||||
)
|
15
src/plugins/effectmakernew/EffectMakerNew.json.in
Normal file
15
src/plugins/effectmakernew/EffectMakerNew.json.in
Normal 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
|
||||
}
|
@@ -12,7 +12,7 @@
|
||||
#include <QJsonDocument>
|
||||
#include <QJsonObject>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
CompositionNode::CompositionNode(const QString &qenPath)
|
||||
{
|
||||
@@ -119,4 +119,5 @@ void CompositionNode::parse(const QString &qenPath)
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <QObject>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class CompositionNode : public QObject
|
||||
{
|
||||
@@ -57,4 +57,5 @@ private:
|
||||
EffectMakerUniformsModel m_unifomrsModel;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -9,7 +9,7 @@
|
||||
#include <nodemetainfo.h>
|
||||
#include <rewritingexception.h>
|
||||
#include <qmldesignerplugin.h>
|
||||
#include <qmlmodelnodeproxy.h>
|
||||
#include <qmldesigner/components/propertyeditor/qmlmodelnodeproxy.h>
|
||||
#include <qmlobjectnode.h>
|
||||
#include <qmltimeline.h>
|
||||
#include <qmltimelinekeyframegroup.h>
|
||||
@@ -27,7 +27,7 @@
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
EffectMakerContextObject::EffectMakerContextObject(QQmlContext *context, QObject *parent)
|
||||
: QObject(parent)
|
||||
@@ -117,7 +117,7 @@ void EffectMakerContextObject::setBackendValues(QQmlPropertyMap *newBackendValue
|
||||
emit backendValuesChanged();
|
||||
}
|
||||
|
||||
void EffectMakerContextObject::setModel(Model *model)
|
||||
void EffectMakerContextObject::setModel(QmlDesigner::Model *model)
|
||||
{
|
||||
m_model = model;
|
||||
}
|
||||
@@ -169,7 +169,7 @@ int EffectMakerContextObject::devicePixelRatio()
|
||||
QStringList EffectMakerContextObject::allStatesForId(const QString &id)
|
||||
{
|
||||
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())
|
||||
return node.allStateNames();
|
||||
}
|
||||
@@ -182,4 +182,5 @@ bool EffectMakerContextObject::isBlocked(const QString &) const
|
||||
return false;
|
||||
}
|
||||
|
||||
} // QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -14,7 +14,7 @@
|
||||
#include <QPoint>
|
||||
#include <QMouseEvent>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class EffectMakerContextObject : public QObject
|
||||
{
|
||||
@@ -90,7 +90,7 @@ private:
|
||||
int m_majorVersion = 1;
|
||||
|
||||
QQmlPropertyMap *m_backendValues = nullptr;
|
||||
Model *m_model = nullptr;
|
||||
QmlDesigner::Model *m_model = nullptr;
|
||||
|
||||
QPoint m_lastPos;
|
||||
|
||||
@@ -98,4 +98,5 @@ private:
|
||||
bool m_selectionChanged = false;
|
||||
};
|
||||
|
||||
} // QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
EffectMakerModel::EffectMakerModel(QObject *parent)
|
||||
: QAbstractListModel{parent}
|
||||
@@ -760,4 +760,5 @@ void EffectMakerModel::setShadersUpToDate(bool UpToDate)
|
||||
emit shadersUpToDateChanged();
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -9,7 +9,7 @@
|
||||
#include <QRegularExpression>
|
||||
#include <QStandardItemModel>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class CompositionNode;
|
||||
class Uniform;
|
||||
@@ -135,4 +135,5 @@ private:
|
||||
const QRegularExpression m_spaceReg = QRegularExpression("\\s+");
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <QCoreApplication>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
EffectMakerNodesModel::EffectMakerNodesModel(QObject *parent)
|
||||
: QAbstractListModel{parent}
|
||||
@@ -104,4 +104,5 @@ void EffectMakerNodesModel::resetModel()
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -9,7 +9,7 @@
|
||||
|
||||
#include <QStandardItemModel>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class EffectMakerNodesModel : public QAbstractListModel
|
||||
{
|
||||
@@ -40,4 +40,5 @@ private:
|
||||
bool m_probeNodesDir = false;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
46
src/plugins/effectmakernew/effectmakerplugin.cpp
Normal file
46
src/plugins/effectmakernew/effectmakerplugin.cpp
Normal 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
|
||||
|
32
src/plugins/effectmakernew/effectmakerplugin.h
Normal file
32
src/plugins/effectmakernew/effectmakerplugin.h
Normal 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
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <utils/qtcassert.h>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
EffectMakerUniformsModel::EffectMakerUniformsModel(QObject *parent)
|
||||
: QAbstractListModel{parent}
|
||||
@@ -72,4 +72,5 @@ QList<Uniform *> EffectMakerUniformsModel::uniforms() const
|
||||
return m_uniforms;
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <QStandardItemModel>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class Uniform;
|
||||
|
||||
@@ -42,4 +42,5 @@ private:
|
||||
QList<Uniform *> m_uniforms;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
83
src/plugins/effectmakernew/effectmakerview.cpp
Normal file
83
src/plugins/effectmakernew/effectmakerview.cpp
Normal 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
|
||||
|
46
src/plugins/effectmakernew/effectmakerview.h
Normal file
46
src/plugins/effectmakernew/effectmakerview.h
Normal 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
|
||||
|
@@ -23,7 +23,7 @@
|
||||
#include <QHBoxLayout>
|
||||
#include <QQmlEngine>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
static QString propertyEditorResourcesPath()
|
||||
{
|
||||
@@ -46,21 +46,22 @@ EffectMakerWidget::EffectMakerWidget(EffectMakerView *view)
|
||||
m_quickWidget->quickWidget()->installEventFilter(this);
|
||||
|
||||
// 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);
|
||||
Theme::setupTheme(m_quickWidget->engine());
|
||||
QmlDesigner::Theme::setupTheme(m_quickWidget->engine());
|
||||
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);
|
||||
layout->setContentsMargins({});
|
||||
layout->setSpacing(0);
|
||||
layout->addWidget(m_quickWidget.data());
|
||||
|
||||
setStyleSheet(Theme::replaceCssColors(
|
||||
setStyleSheet(QmlDesigner::Theme::replaceCssColors(
|
||||
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");
|
||||
map->setProperties({{"effectMakerNodesModel", QVariant::fromValue(m_effectMakerNodesModel.data())},
|
||||
@@ -142,4 +143,5 @@ void EffectMakerWidget::reloadQmlSource()
|
||||
m_quickWidget->setSource(QUrl::fromLocalFile(effectMakerQmlPath));
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "qmlmodelnodeproxy.h"
|
||||
#include "qmldesigner/components/propertyeditor/qmlmodelnodeproxy.h"
|
||||
|
||||
#include <coreplugin/icontext.h>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
|
||||
class StudioQuickWidget;
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class EffectMakerView;
|
||||
class EffectMakerModel;
|
||||
@@ -53,7 +53,8 @@ private:
|
||||
QPointer<EffectMakerNodesModel> m_effectMakerNodesModel;
|
||||
QPointer<EffectMakerView> m_effectMakerView;
|
||||
QPointer<StudioQuickWidget> m_quickWidget;
|
||||
QmlModelNodeProxy m_backendModelNode;
|
||||
QmlDesigner::QmlModelNodeProxy m_backendModelNode;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -6,7 +6,7 @@
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
EffectNode::EffectNode(const QString &qenPath)
|
||||
: m_qenPath(qenPath)
|
||||
@@ -39,4 +39,5 @@ QString EffectNode::qenPath() const
|
||||
return m_qenPath;
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -6,7 +6,7 @@
|
||||
#include <QObject>
|
||||
#include <QUrl>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class EffectNode : public QObject
|
||||
{
|
||||
@@ -31,4 +31,5 @@ private:
|
||||
QUrl m_iconPath;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "effectnodescategory.h"
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
EffectNodesCategory::EffectNodesCategory(const QString &name, const QList<EffectNode *> &nodes)
|
||||
: m_name(name),
|
||||
@@ -19,4 +19,5 @@ QList<EffectNode *> EffectNodesCategory::nodes() const
|
||||
return m_categoryNodes;
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <QObject>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class EffectNodesCategory : public QObject
|
||||
{
|
||||
@@ -27,4 +27,5 @@ private:
|
||||
QList<EffectNode *> m_categoryNodes;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -5,7 +5,7 @@
|
||||
|
||||
#include <QJsonArray>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
QString EffectUtils::codeFromJsonArray(const QJsonArray &codeArray)
|
||||
{
|
||||
@@ -20,4 +20,5 @@ QString EffectUtils::codeFromJsonArray(const QJsonArray &codeArray)
|
||||
return codeString;
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -7,7 +7,7 @@
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QJsonArray)
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class EffectUtils
|
||||
{
|
||||
@@ -17,4 +17,5 @@ public:
|
||||
static QString codeFromJsonArray(const QJsonArray &codeArray);
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -5,7 +5,7 @@
|
||||
#include <QStringList>
|
||||
#include <QDebug>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
ShaderFeatures::ShaderFeatures()
|
||||
{
|
||||
@@ -77,4 +77,5 @@ void ShaderFeatures::checkLine(const QString &line, Features &features)
|
||||
features.setFlag(BlurSources, true);
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -6,7 +6,7 @@
|
||||
#include <QFlags>
|
||||
#include <QString>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class ShaderFeatures
|
||||
{
|
||||
@@ -36,4 +36,5 @@ private:
|
||||
};
|
||||
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(ShaderFeatures::Features)
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
#include "syntaxhighlighterdata.h"
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
static constexpr QByteArrayView shader_arg_names[] {
|
||||
{ "gl_Position" },
|
||||
@@ -186,5 +186,6 @@ QList<QByteArrayView> SyntaxHighlighterData::reservedFunctionNames()
|
||||
return { std::begin(shader_function_names), std::end(shader_function_names) };
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
||||
|
@@ -6,7 +6,7 @@
|
||||
#include <QByteArrayView>
|
||||
#include <QList>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
class SyntaxHighlighterData
|
||||
{
|
||||
@@ -18,5 +18,6 @@ public:
|
||||
static QList<QByteArrayView> reservedFunctionNames();
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
||||
|
||||
|
@@ -2,14 +2,14 @@
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "uniform.h"
|
||||
#include <qmldesignerplugin.h>
|
||||
|
||||
#include "propertyeditorvalue.h"
|
||||
|
||||
#include <QColor>
|
||||
#include <QJsonObject>
|
||||
#include <QVector2D>
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
Uniform::Uniform(const QJsonObject &propObj)
|
||||
{
|
||||
@@ -45,7 +45,7 @@ Uniform::Uniform(const QJsonObject &propObj)
|
||||
|
||||
setValueData(value, defaultValue, minValue, maxValue);
|
||||
|
||||
m_backendValue = new PropertyEditorValue(this);
|
||||
m_backendValue = new QmlDesigner::PropertyEditorValue(this);
|
||||
m_backendValue->setValue(value);
|
||||
}
|
||||
|
||||
@@ -321,4 +321,4 @@ QString Uniform::typeToProperty(Uniform::Type type)
|
||||
return QString();
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
@@ -6,13 +6,15 @@
|
||||
#include <QObject>
|
||||
#include <QVariant>
|
||||
|
||||
#include <qmldesigner/components/propertyeditor/propertyeditorvalue.h>
|
||||
|
||||
QT_FORWARD_DECLARE_CLASS(QColor)
|
||||
QT_FORWARD_DECLARE_CLASS(QJsonObject)
|
||||
QT_FORWARD_DECLARE_CLASS(QVector2D)
|
||||
|
||||
namespace QmlDesigner {
|
||||
namespace EffectMaker {
|
||||
|
||||
|
||||
class PropertyEditorValue;
|
||||
|
||||
class Uniform : public QObject
|
||||
{
|
||||
@@ -97,7 +99,7 @@ private:
|
||||
bool m_useCustomValue = false;
|
||||
bool m_enabled = true;
|
||||
bool m_enableMipmap = false;
|
||||
PropertyEditorValue *m_backendValue = nullptr;
|
||||
QmlDesigner::PropertyEditorValue *m_backendValue = nullptr;
|
||||
|
||||
bool operator==(const Uniform &rhs) const noexcept
|
||||
{
|
||||
@@ -105,4 +107,4 @@ private:
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
} // namespace EffectMaker
|
@@ -709,24 +709,6 @@ extend_qtc_plugin(QmlDesigner
|
||||
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
|
||||
SOURCES_PREFIX components/navigator
|
||||
SOURCES
|
||||
|
@@ -16,7 +16,6 @@
|
||||
#include <designeractionmanagerview.h>
|
||||
#include <designmodewidget.h>
|
||||
#include <edit3dview.h>
|
||||
#include <effectmakerview.h>
|
||||
#include <formeditorview.h>
|
||||
#include <itemlibraryview.h>
|
||||
#include <materialbrowserview.h>
|
||||
@@ -56,7 +55,6 @@ public:
|
||||
, contentLibraryView{externalDependencies}
|
||||
, componentView{externalDependencies}
|
||||
, edit3DView{externalDependencies}
|
||||
, effectMakerView{externalDependencies}
|
||||
, formEditorView{externalDependencies}
|
||||
, textEditorView{externalDependencies}
|
||||
, assetsLibraryView{externalDependencies}
|
||||
@@ -79,7 +77,6 @@ public:
|
||||
ContentLibraryView contentLibraryView;
|
||||
ComponentView componentView;
|
||||
Edit3DView edit3DView;
|
||||
EffectMakerView effectMakerView;
|
||||
FormEditorView formEditorView;
|
||||
TextEditorView textEditorView;
|
||||
AssetsLibraryView assetsLibraryView;
|
||||
@@ -212,9 +209,6 @@ QList<AbstractView *> ViewManager::standardViews() const
|
||||
.toBool())
|
||||
list.append(&d->debugView);
|
||||
|
||||
if (qEnvironmentVariableIsSet("ENABLE_QDS_EFFECTMAKER"))
|
||||
list.append(&d->effectMakerView);
|
||||
|
||||
if (qEnvironmentVariableIsSet("ENABLE_QDS_COLLECTIONVIEW"))
|
||||
list.append(&d->collectionView);
|
||||
|
||||
@@ -393,9 +387,6 @@ QList<WidgetInfo> ViewManager::widgetInfos() const
|
||||
widgetInfoList.append(d->textureEditorView.widgetInfo());
|
||||
widgetInfoList.append(d->statesEditorView.widgetInfo());
|
||||
|
||||
if (qEnvironmentVariableIsSet("ENABLE_QDS_EFFECTMAKER"))
|
||||
widgetInfoList.append(d->effectMakerView.widgetInfo());
|
||||
|
||||
if (qEnvironmentVariableIsSet("ENABLE_QDS_COLLECTIONVIEW"))
|
||||
widgetInfoList.append(d->collectionView.widgetInfo());
|
||||
|
||||
|
@@ -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
|
@@ -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
|
@@ -51,7 +51,7 @@ private:
|
||||
PropertyEditorValue *m_editorValue = nullptr;
|
||||
};
|
||||
|
||||
class PropertyEditorValue : public QObject
|
||||
class QMLDESIGNERCORE_EXPORT PropertyEditorValue : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@@ -9,7 +9,7 @@
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
class QmlModelNodeProxy : public QObject
|
||||
class QMLDESIGNERCORE_EXPORT QmlModelNodeProxy : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
|
@@ -6,7 +6,6 @@
|
||||
#include "collectionwidget.h"
|
||||
#include "designmodewidget.h"
|
||||
#include "edit3dwidget.h"
|
||||
#include "effectmakerwidget.h"
|
||||
#include "formeditorwidget.h"
|
||||
#include "materialbrowserwidget.h"
|
||||
#include "navigatorwidget.h"
|
||||
@@ -99,18 +98,6 @@ void TextEditorContext::contextHelp(const HelpCallback &callback) const
|
||||
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)
|
||||
: IContext(widget)
|
||||
{
|
||||
|
@@ -74,15 +74,6 @@ public:
|
||||
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
|
||||
{
|
||||
Q_OBJECT
|
||||
|
Reference in New Issue
Block a user