[ui] GraphEditor: simplify foreach loop menu

This commit is contained in:
Fabien Castan 2024-08-21 00:42:11 +02:00 committed by Aurore LAFAURIE
parent f84654b2ae
commit 62ea6924f6

View file

@ -389,97 +389,73 @@ Item {
} }
contentItem: Row { contentItem: Row {
spacing: 20 IntSelector {
tooltipText: "Iterations"
visible: edgeMenu.currentEdge && edgeMenu.forLoop
Column {
id: listAttrColumn
visible: edgeMenu.currentEdge && edgeMenu.forLoop && expandButton.canExpand
property var listAttr: edgeMenu.currentEdge ? edgeMenu.currentEdge.src.root : null property var listAttr: edgeMenu.currentEdge ? edgeMenu.currentEdge.src.root : null
Layout.alignment: Qt.AlignTop
Text {
id: listAttrMenuText
text: "<b>Iteration:</b>"
color: activePalette.text // We add 1 to the index because of human readable index (starting at 1)
} value: listAttr ? listAttr.value.indexOf(edgeMenu.currentEdge.src) + 1 : 0
range: { "min": 1, "max": listAttr ? listAttr.value.count : 0 }
IntSelector { onValueChanged: {
tooltipText: "Iterations" if (listAttr === null) {
width: listAttrColumn.width return
visible: edgeMenu.currentEdge && edgeMenu.forLoop
// We add 1 to the index because of human readable index (starting at 1)
value: listAttrColumn.listAttr ? listAttrColumn.listAttr.value.indexOf(edgeMenu.currentEdge.src) + 1 : 0
range: { "min": 1, "max": listAttrColumn.listAttr ? listAttrColumn.listAttr.value.count : 0 }
onValueChanged: {
if (listAttrColumn.listAttr === null) {
return
}
const newSrcAttr = listAttrColumn.listAttr.value.at(value - 1)
const dst = edgeMenu.currentEdge.dst
// if the edge exists do not replace it
if (newSrcAttr === edgeMenu.currentEdge.src && dst === edgeMenu.currentEdge.dst) {
return
}
edgeMenu.currentEdge = uigraph.replaceEdge(edgeMenu.currentEdge, newSrcAttr, dst)
} }
const newSrcAttr = listAttr.value.at(value - 1)
const dst = edgeMenu.currentEdge.dst
// if the edge exists do not replace it
if (newSrcAttr === edgeMenu.currentEdge.src && dst === edgeMenu.currentEdge.dst) {
return
}
edgeMenu.currentEdge = uigraph.replaceEdge(edgeMenu.currentEdge, newSrcAttr, dst)
} }
} }
Column {
Layout.alignment: Qt.AlignTop
Text {
text: "<b>Actions:</b>"
color: activePalette.text MaterialToolButton {
font.pointSize: 13
ToolTip.text: "Remove edge"
enabled: edgeMenu.currentEdge && !edgeMenu.currentEdge.dst.node.locked && !edgeMenu.currentEdge.dst.isReadOnly
text: MaterialIcons.delete_
onClicked: {
uigraph.removeEdge(edgeMenu.currentEdge)
edgeMenu.close()
} }
}
Row { MaterialToolButton {
MaterialToolButton { id: expandButton
font.pointSize: 13
ToolTip.text: "Remove edge"
enabled: edgeMenu.currentEdge && !edgeMenu.currentEdge.dst.node.locked && !edgeMenu.currentEdge.dst.isReadOnly
text: MaterialIcons.delete_
onClicked: {
uigraph.removeEdge(edgeMenu.currentEdge)
edgeMenu.close()
}
}
MaterialToolButton { property bool canExpand: edgeMenu.currentEdge && edgeMenu.forLoop
id: expandButton
property bool canExpand: edgeMenu.currentEdge && edgeMenu.forLoop visible: edgeMenu.currentEdge && edgeMenu.forLoop && canExpand
enabled: edgeMenu.currentEdge && !edgeMenu.currentEdge.dst.node.locked && !edgeMenu.currentEdge.dst.isReadOnly
font.pointSize: 13
ToolTip.text: "Expand"
text: MaterialIcons.open_in_full
visible: edgeMenu.currentEdge && edgeMenu.forLoop && canExpand onClicked: {
enabled: edgeMenu.currentEdge && !edgeMenu.currentEdge.dst.node.locked && !edgeMenu.currentEdge.dst.isReadOnly uigraph.expandForLoop(edgeMenu.currentEdge)
font.pointSize: 13 canExpand = false
ToolTip.text: "Expand" edgeMenu.close()
text: MaterialIcons.open_in_full }
}
onClicked: { MaterialToolButton {
uigraph.expandForLoop(edgeMenu.currentEdge) id: collapseButton
canExpand = false
edgeMenu.close()
}
}
MaterialToolButton { visible: edgeMenu.currentEdge && edgeMenu.forLoop && !expandButton.canExpand
id: collapseButton enabled: edgeMenu.currentEdge && !edgeMenu.currentEdge.dst.node.locked && !edgeMenu.currentEdge.dst.isReadOnly
font.pointSize: 13
ToolTip.text: "Collapse"
text: MaterialIcons.close_fullscreen
visible: edgeMenu.currentEdge && edgeMenu.forLoop && !expandButton.canExpand onClicked: {
enabled: edgeMenu.currentEdge && !edgeMenu.currentEdge.dst.node.locked && !edgeMenu.currentEdge.dst.isReadOnly uigraph.collapseForLoop(edgeMenu.currentEdge)
font.pointSize: 13 expandButton.canExpand = true
ToolTip.text: "Collapse" edgeMenu.close()
text: MaterialIcons.close_fullscreen
onClicked: {
uigraph.collapseForLoop(edgeMenu.currentEdge)
expandButton.canExpand = true
edgeMenu.close()
}
}
} }
} }
} }