forked from qt-creator/qt-creator
EffectMaker: Add 'assign to selected' feature
Fixes: QDS-11444 Change-Id: I17b5397b88eeccaae585e84d7ce62f4f80474f87 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:
@@ -83,6 +83,10 @@ Item {
|
||||
}
|
||||
|
||||
onSaveAsClicked: saveAsDialog.open()
|
||||
|
||||
onAssignToSelectedClicked: {
|
||||
EffectMakerBackend.effectMakerModel.assignToSelected()
|
||||
}
|
||||
}
|
||||
|
||||
EffectMakerPreview {
|
||||
|
@@ -18,6 +18,7 @@ Rectangle {
|
||||
signal addClicked
|
||||
signal saveClicked
|
||||
signal saveAsClicked
|
||||
signal assignToSelectedClicked
|
||||
|
||||
Row {
|
||||
spacing: 5
|
||||
@@ -49,6 +50,15 @@ Rectangle {
|
||||
|
||||
onClicked: root.saveAsClicked()
|
||||
}
|
||||
|
||||
HelperWidgets.AbstractButton {
|
||||
style: StudioTheme.Values.viewBarButtonStyle
|
||||
buttonIcon: StudioTheme.Constants.assignTo_medium
|
||||
tooltip: qsTr("Assign current composition to selected item")
|
||||
enabled: EffectMakerBackend.effectMakerModel.currentComposition !== ""
|
||||
|
||||
onClicked: root.assignToSelectedClicked()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@@ -164,6 +164,13 @@ void EffectMakerModel::clear()
|
||||
emit nodesChanged();
|
||||
}
|
||||
|
||||
void EffectMakerModel::assignToSelected()
|
||||
{
|
||||
const QString effectsAssetsDir = QmlDesigner::ModelNodeOperations::getEffectsDefaultDirectory();
|
||||
const QString path = effectsAssetsDir + QDir::separator() + m_currentComposition + ".qep";
|
||||
emit assignToSelectedTriggered(path);
|
||||
}
|
||||
|
||||
QString EffectMakerModel::getUniqueEffectName() const
|
||||
{
|
||||
const QString effectsDir = QmlDesigner::ModelNodeOperations::getEffectsDefaultDirectory();
|
||||
|
@@ -65,6 +65,7 @@ public:
|
||||
Q_INVOKABLE void moveNode(int fromIdx, int toIdx);
|
||||
Q_INVOKABLE void removeNode(int idx);
|
||||
Q_INVOKABLE void clear();
|
||||
Q_INVOKABLE void assignToSelected();
|
||||
Q_INVOKABLE QString getUniqueEffectName() const;
|
||||
|
||||
bool shadersUpToDate() const;
|
||||
@@ -105,6 +106,7 @@ signals:
|
||||
void nodesChanged();
|
||||
void resourcesSaved(const QByteArray &type, const Utils::FilePath &path);
|
||||
void hasUnsavedChangesChanged();
|
||||
void assignToSelectedTriggered(const QString &effectPath);
|
||||
|
||||
private:
|
||||
enum Roles {
|
||||
|
@@ -9,6 +9,8 @@
|
||||
|
||||
#include "qmldesignerconstants.h"
|
||||
|
||||
#include <modelnodeoperations.h>
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
namespace EffectMaker {
|
||||
@@ -44,6 +46,15 @@ QmlDesigner::WidgetInfo EffectMakerView::widgetInfo()
|
||||
if (m_widget.isNull()) {
|
||||
m_widget = new EffectMakerWidget{this};
|
||||
|
||||
connect(m_widget->effectMakerModel(), &EffectMakerModel::assignToSelectedTriggered, this,
|
||||
[&] (const QString &effectPath) {
|
||||
executeInTransaction("EffectMakerView::widgetInfo", [&] {
|
||||
const QList<QmlDesigner::ModelNode> selectedNodes = selectedModelNodes();
|
||||
for (const QmlDesigner::ModelNode &node : selectedNodes)
|
||||
QmlDesigner::ModelNodeOperations::handleItemLibraryEffectDrop(effectPath, node);
|
||||
});
|
||||
});
|
||||
|
||||
auto context = new EffectMakerContext(m_widget.data());
|
||||
Core::ICore::addContextObject(context);
|
||||
}
|
||||
@@ -78,4 +89,3 @@ void EffectMakerView::modelAboutToBeDetached(QmlDesigner::Model *model)
|
||||
}
|
||||
|
||||
} // namespace EffectMaker
|
||||
|
||||
|
@@ -43,4 +43,3 @@ private:
|
||||
};
|
||||
|
||||
} // namespace EffectMaker
|
||||
|
||||
|
@@ -136,7 +136,8 @@ bool isNewEffectMakerActivated();
|
||||
Utils::FilePath getImagesDefaultDirectory();
|
||||
|
||||
//Item Library and Assets related drop operations
|
||||
ModelNode handleItemLibraryEffectDrop(const QString &effectPath, const ModelNode &targetNode);
|
||||
QMLDESIGNERCOMPONENTS_EXPORT ModelNode handleItemLibraryEffectDrop(const QString &effectPath,
|
||||
const ModelNode &targetNode);
|
||||
void handleTextureDrop(const QMimeData *mimeData, const ModelNode &targetModelNode);
|
||||
void handleMaterialDrop(const QMimeData *mimeData, const ModelNode &targetNode);
|
||||
ModelNode handleItemLibraryImageDrop(const QString &imagePath,
|
||||
|
Reference in New Issue
Block a user