From 77678c7bcef3953cbfe61f99dbd00f1dc4f441bf Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 21 Nov 2023 12:43:49 +0200 Subject: [PATCH] EffectMaker: Add clear all nodes button Fixes: QDS-11335 Change-Id: I5d0e0e11baabe780c19234410814a9f6eb45130d Reviewed-by: Mahmoud Badri --- .../effectMakerQmlSources/EffectMaker.qml | 17 ++++++++++++++++- .../EffectNodesComboBox.qml | 2 -- src/plugins/effectmakernew/effectmakermodel.cpp | 13 +++++++++++-- src/plugins/effectmakernew/effectmakermodel.h | 1 + 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml index 3476b084552..fd2ec56fd4f 100644 --- a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml +++ b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectMaker.qml @@ -55,6 +55,21 @@ Item { mainRoot: root anchors.verticalCenter: parent.verticalCenter + x: 5 + width: parent.width - 50 + } + + HelperWidgets.AbstractButton { + anchors.right: parent.right + anchors.rightMargin: 5 + anchors.verticalCenter: parent.verticalCenter + + style: StudioTheme.Values.viewBarButtonStyle + buttonIcon: StudioTheme.Constants.clearList_medium + tooltip: qsTr("Remove all effect nodes.") + enabled: !EffectMakerBackend.effectMakerModel.isEmpty + + onClicked: EffectMakerBackend.effectMakerModel.removeAllNodes() } HelperWidgets.AbstractButton { @@ -64,7 +79,7 @@ Item { style: StudioTheme.Values.viewBarButtonStyle buttonIcon: StudioTheme.Constants.code - tooltip: qsTr("Open Shader in Code Editor") + tooltip: qsTr("Open Shader in Code Editor.") visible: false // TODO: to be implemented onClicked: {} // TODO diff --git a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectNodesComboBox.qml b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectNodesComboBox.qml index 42265970787..a2187d4aba7 100644 --- a/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectNodesComboBox.qml +++ b/share/qtcreator/qmldesigner/effectMakerQmlSources/EffectNodesComboBox.qml @@ -12,8 +12,6 @@ StudioControls.ComboBox { id: root actionIndicatorVisible: false - x: 5 - width: parent.width - 50 model: [qsTr("+ Add Effect")] diff --git a/src/plugins/effectmakernew/effectmakermodel.cpp b/src/plugins/effectmakernew/effectmakermodel.cpp index b078d563aa0..4595fec59c5 100644 --- a/src/plugins/effectmakernew/effectmakermodel.cpp +++ b/src/plugins/effectmakernew/effectmakermodel.cpp @@ -129,8 +129,7 @@ void EffectMakerModel::moveNode(int fromIdx, int toIdx) void EffectMakerModel::removeNode(int idx) { beginRemoveRows({}, idx, idx); - CompositionNode *node = m_nodes.at(idx); - m_nodes.removeAt(idx); + CompositionNode *node = m_nodes.takeAt(idx); delete node; endRemoveRows(); @@ -140,6 +139,16 @@ void EffectMakerModel::removeNode(int idx) bakeShaders(); } +void EffectMakerModel::removeAllNodes() +{ + beginResetModel(); + qDeleteAll(m_nodes); + m_nodes.clear(); + endResetModel(); + + setIsEmpty(true); +} + QString EffectMakerModel::fragmentShader() const { return m_fragmentShader; diff --git a/src/plugins/effectmakernew/effectmakermodel.h b/src/plugins/effectmakernew/effectmakermodel.h index 96eb0e19b46..b844acf0d08 100644 --- a/src/plugins/effectmakernew/effectmakermodel.h +++ b/src/plugins/effectmakernew/effectmakermodel.h @@ -63,6 +63,7 @@ public: Q_INVOKABLE void moveNode(int fromIdx, int toIdx); Q_INVOKABLE void removeNode(int idx); + Q_INVOKABLE void removeAllNodes(); bool shadersUpToDate() const; void setShadersUpToDate(bool newShadersUpToDate);