Create nodes under the context menu

Change-Id: I6f944bf3bda0d706f9678dc918f875d7b5b779ff
Reviewed-by: Rafal Andrusieczko <rnd@spyro-soft.com>
This commit is contained in:
Rafal Andrusieczko
2024-12-20 16:49:33 +01:00
parent 21d5743a21
commit f0a3f3bf2f
2 changed files with 28 additions and 17 deletions

View File

@@ -291,17 +291,16 @@ Item {
graph.removeSelection(); graph.removeSelection();
} }
} }
onRightClicked: function (pos) { onRightClicked: pos => {
if (NodeGraphEditorBackend.nodeGraphEditorModel.currentFileName !== "") { if (NodeGraphEditorBackend.nodeGraphEditorModel.currentFileName !== "") {
contextMenu.node = null;
var selectedNodes = graphView.graph.selectedNodes; var selectedNodes = graphView.graph.selectedNodes;
if (selectedNodes) { if (selectedNodes && selectedNodes.length > 0) {
if (selectedNodes.length > 0) contextMenu.node = selectedNodes.at(0);
contextMenu.node = selectedNodes.at(0); }
else
contextMenu.node = null;
} else
contextMenu.node = null;
const factor = (1.0 / graphView.zoom);
contextMenu.newPosition = Qt.point(-graphView.containerItem.x * factor + pos.x * factor, -graphView.containerItem.y * factor + pos.y * factor);
contextMenu.popup(); contextMenu.popup();
} }
} }

View File

@@ -15,6 +15,7 @@ StudioControls.Menu {
required property var graph required property var graph
property var inputsModel: [] property var inputsModel: []
property point newPosition
property var node property var node
closePolicy: Popup.CloseOnPressOutside | Popup.CloseOnEscape closePolicy: Popup.CloseOnPressOutside | Popup.CloseOnEscape
@@ -30,7 +31,7 @@ StudioControls.Menu {
text: qsTr("BaseColor") text: qsTr("BaseColor")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.baseColor); internal.createNode(Nodes.Components.baseColor);
} }
} }
@@ -38,7 +39,7 @@ StudioControls.Menu {
text: qsTr("Metalness") text: qsTr("Metalness")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.metalness); internal.createNode(Nodes.Components.metalness);
} }
} }
@@ -46,7 +47,7 @@ StudioControls.Menu {
text: qsTr("Roughness") text: qsTr("Roughness")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.roughness); internal.createNode(Nodes.Components.roughness);
} }
} }
@@ -54,7 +55,7 @@ StudioControls.Menu {
text: qsTr("CheckBox") text: qsTr("CheckBox")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.checkBox); internal.createNode(Nodes.Components.checkBox);
} }
} }
@@ -62,7 +63,7 @@ StudioControls.Menu {
text: qsTr("Color") text: qsTr("Color")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.color); internal.createNode(Nodes.Components.color);
} }
} }
@@ -70,7 +71,7 @@ StudioControls.Menu {
text: qsTr("ComboBox") text: qsTr("ComboBox")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.comboBox); internal.createNode(Nodes.Components.comboBox);
} }
} }
@@ -78,7 +79,7 @@ StudioControls.Menu {
text: qsTr("Material") text: qsTr("Material")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.material); internal.createNode(Nodes.Components.material);
} }
} }
@@ -86,7 +87,7 @@ StudioControls.Menu {
text: qsTr("RealSpinBox") text: qsTr("RealSpinBox")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.realSpinBox); internal.createNode(Nodes.Components.realSpinBox);
} }
} }
@@ -94,7 +95,7 @@ StudioControls.Menu {
text: qsTr("Texture") text: qsTr("Texture")
onTriggered: () => { onTriggered: () => {
contextMenu.graph.insertNode(Nodes.Components.texture); internal.createNode(Nodes.Components.texture);
} }
} }
@@ -125,4 +126,15 @@ StudioControls.Menu {
} }
} }
} }
QtObject {
id: internal
function createNode(type) {
const node = contextMenu.graph.insertNode(type);
const nodeItem = node.item;
nodeItem.x = contextMenu.newPosition.x;
nodeItem.y = contextMenu.newPosition.y;
}
}
} }