EffectMaker: Add clear all nodes button

Fixes: QDS-11335
Change-Id: I5d0e0e11baabe780c19234410814a9f6eb45130d
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
Miikka Heikkinen
2023-11-21 12:43:49 +02:00
parent 659772baa4
commit 77678c7bce
4 changed files with 28 additions and 5 deletions

View File

@@ -55,6 +55,21 @@ Item {
mainRoot: root mainRoot: root
anchors.verticalCenter: parent.verticalCenter 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 { HelperWidgets.AbstractButton {
@@ -64,7 +79,7 @@ Item {
style: StudioTheme.Values.viewBarButtonStyle style: StudioTheme.Values.viewBarButtonStyle
buttonIcon: StudioTheme.Constants.code buttonIcon: StudioTheme.Constants.code
tooltip: qsTr("Open Shader in Code Editor") tooltip: qsTr("Open Shader in Code Editor.")
visible: false // TODO: to be implemented visible: false // TODO: to be implemented
onClicked: {} // TODO onClicked: {} // TODO

View File

@@ -12,8 +12,6 @@ StudioControls.ComboBox {
id: root id: root
actionIndicatorVisible: false actionIndicatorVisible: false
x: 5
width: parent.width - 50
model: [qsTr("+ Add Effect")] model: [qsTr("+ Add Effect")]

View File

@@ -129,8 +129,7 @@ void EffectMakerModel::moveNode(int fromIdx, int toIdx)
void EffectMakerModel::removeNode(int idx) void EffectMakerModel::removeNode(int idx)
{ {
beginRemoveRows({}, idx, idx); beginRemoveRows({}, idx, idx);
CompositionNode *node = m_nodes.at(idx); CompositionNode *node = m_nodes.takeAt(idx);
m_nodes.removeAt(idx);
delete node; delete node;
endRemoveRows(); endRemoveRows();
@@ -140,6 +139,16 @@ void EffectMakerModel::removeNode(int idx)
bakeShaders(); bakeShaders();
} }
void EffectMakerModel::removeAllNodes()
{
beginResetModel();
qDeleteAll(m_nodes);
m_nodes.clear();
endResetModel();
setIsEmpty(true);
}
QString EffectMakerModel::fragmentShader() const QString EffectMakerModel::fragmentShader() const
{ {
return m_fragmentShader; return m_fragmentShader;

View File

@@ -63,6 +63,7 @@ public:
Q_INVOKABLE void moveNode(int fromIdx, int toIdx); Q_INVOKABLE void moveNode(int fromIdx, int toIdx);
Q_INVOKABLE void removeNode(int idx); Q_INVOKABLE void removeNode(int idx);
Q_INVOKABLE void removeAllNodes();
bool shadersUpToDate() const; bool shadersUpToDate() const;
void setShadersUpToDate(bool newShadersUpToDate); void setShadersUpToDate(bool newShadersUpToDate);