forked from qt-creator/qt-creator
EffectMaker: Enable using project assets as effect textures
Also fixed few warnings by adding dummy needed context properties. Change-Id: Ieed0f9d409302ba9ff1409b9081cda942e46d2e9 Reviewed-by: Amr Elsayed <amr.elsayed@qt.io> Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -18,7 +18,6 @@ Row {
|
|||||||
|
|
||||||
actionIndicatorVisible: false
|
actionIndicatorVisible: false
|
||||||
|
|
||||||
//TODO: Disable until we figure out how to use images from outside qds
|
onAbsoluteFilePathChanged: uniformValue = absoluteFilePath
|
||||||
//onAbsoluteFilePathChanged: uniformValue = absoluteFilePath
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -50,8 +50,21 @@ bool EffectMakerUniformsModel::setData(const QModelIndex &index, const QVariant
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
auto uniform = m_uniforms.at(index.row());
|
auto uniform = m_uniforms.at(index.row());
|
||||||
|
|
||||||
|
if (uniform->type() == Uniform::Type::Sampler) {
|
||||||
|
QString updatedValue = value.toString();
|
||||||
|
int idx = value.toString().indexOf("file:");
|
||||||
|
|
||||||
|
QString path = idx > 0 ? updatedValue.right(updatedValue.size() - idx - 5) : updatedValue;
|
||||||
|
updatedValue = QUrl::fromLocalFile(path).toString();
|
||||||
|
|
||||||
|
uniform->setValue(updatedValue);
|
||||||
|
g_propertyData.insert(uniform->name(), updatedValue);
|
||||||
|
} else {
|
||||||
uniform->setValue(value);
|
uniform->setValue(value);
|
||||||
g_propertyData.insert(uniform->name(), value);
|
g_propertyData.insert(uniform->name(), value);
|
||||||
|
}
|
||||||
|
|
||||||
emit dataChanged(index, index, {role});
|
emit dataChanged(index, index, {role});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@@ -14,6 +14,8 @@
|
|||||||
#include "qqmlcontext.h"
|
#include "qqmlcontext.h"
|
||||||
#include "theme.h"
|
#include "theme.h"
|
||||||
|
|
||||||
|
#include "qmldesigner/components/propertyeditor/assetimageprovider.h"
|
||||||
|
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
|
|
||||||
#include <studioquickwidget.h>
|
#include <studioquickwidget.h>
|
||||||
@@ -136,6 +138,11 @@ void EffectMakerWidget::initView()
|
|||||||
m_backendModelNode.setup(m_effectMakerView->rootModelNode());
|
m_backendModelNode.setup(m_effectMakerView->rootModelNode());
|
||||||
m_quickWidget->rootContext()->setContextProperty("anchorBackend", &m_backendAnchorBinding);
|
m_quickWidget->rootContext()->setContextProperty("anchorBackend", &m_backendAnchorBinding);
|
||||||
m_quickWidget->rootContext()->setContextProperty("modelNodeBackend", &m_backendModelNode);
|
m_quickWidget->rootContext()->setContextProperty("modelNodeBackend", &m_backendModelNode);
|
||||||
|
m_quickWidget->rootContext()->setContextProperty("activeDragSuffix", "");
|
||||||
|
|
||||||
|
m_quickWidget->engine()->addImageProvider("qmldesigner_thumbnails",
|
||||||
|
new QmlDesigner::AssetImageProvider(
|
||||||
|
QmlDesigner::QmlDesignerPlugin::imageCache()));
|
||||||
|
|
||||||
// init the first load of the QML UI elements
|
// init the first load of the QML UI elements
|
||||||
reloadQmlSource();
|
reloadQmlSource();
|
||||||
|
@@ -12,8 +12,8 @@
|
|||||||
|
|
||||||
namespace EffectMaker {
|
namespace EffectMaker {
|
||||||
|
|
||||||
Uniform::Uniform(const QJsonObject &propObj, const QString &qenPath) :
|
Uniform::Uniform(const QJsonObject &propObj, const QString &qenPath)
|
||||||
m_qenPath(qenPath)
|
: m_qenPath(qenPath)
|
||||||
{
|
{
|
||||||
QString value, defaultValue, minValue, maxValue;
|
QString value, defaultValue, minValue, maxValue;
|
||||||
|
|
||||||
@@ -35,9 +35,10 @@ Uniform::Uniform(const QJsonObject &propObj, const QString &qenPath) :
|
|||||||
QString mipmapProperty = mipmapPropertyName(m_name);
|
QString mipmapProperty = mipmapPropertyName(m_name);
|
||||||
g_propertyData[mipmapProperty] = m_enableMipmap;
|
g_propertyData[mipmapProperty] = m_enableMipmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (propObj.contains("value")) {
|
if (propObj.contains("value")) {
|
||||||
value = propObj.value("value").toString();
|
value = propObj.value("value").toString();
|
||||||
if (m_type == Type::Sampler && !value.isEmpty())
|
if (m_type == Type::Sampler)
|
||||||
value = getResourcePath(value);
|
value = getResourcePath(value);
|
||||||
} else {
|
} else {
|
||||||
// QEN files don't store the current value, so with those use default value
|
// QEN files don't store the current value, so with those use default value
|
||||||
|
@@ -14,8 +14,6 @@ QT_FORWARD_DECLARE_CLASS(QVector2D)
|
|||||||
|
|
||||||
namespace EffectMaker {
|
namespace EffectMaker {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Uniform : public QObject
|
class Uniform : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
@@ -4,12 +4,13 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "imagecache/midsizeimagecacheprovider.h"
|
#include "imagecache/midsizeimagecacheprovider.h"
|
||||||
|
#include "qmldesigner_global.h"
|
||||||
|
|
||||||
#include <QQuickAsyncImageProvider>
|
#include <QQuickAsyncImageProvider>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
class AssetImageProvider : public QQuickAsyncImageProvider
|
class QMLDESIGNER_EXPORT AssetImageProvider : public QQuickAsyncImageProvider
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
AssetImageProvider(AsynchronousImageCache &imageCache, const QImage &defaultImage = {})
|
AssetImageProvider(AsynchronousImageCache &imageCache, const QImage &defaultImage = {})
|
||||||
|
Reference in New Issue
Block a user