QmlNodeEditor
ShapeContainer.qml
Go to the documentation of this file.
1 import QtQuick 2.15
2 import QtQuick.Controls 2.15
3 import QtQuick.Shapes 1.15
4 
5 Item {
6  id: shapeContainer
7  anchors.fill: parent
8 
9  Repeater {
10  model: connectionsModel
11  }
12 
13  Shape {
14  id: newConnection
15  anchors.fill: parent
16  visible: false
17 
18  property string filter: ""
19 
20  property alias startX: newConnectionShapePath.startX
21  property alias startY: newConnectionShapePath.startY
22 
23  function drag(globalConnector, globalMouse) {
24  var connectorCoordinates = shapeContainer.mapFromGlobal(globalConnector.x, globalConnector.y);
25  var mouseCoordinates = shapeContainer.mapFromGlobal(globalMouse.x, globalMouse.y);
26  startX = connectorCoordinates.x;
27  startY = connectorCoordinates.y;
28  nodePortConnectorDragTarget.x = mouseCoordinates.x;
29  nodePortConnectorDragTarget.y = mouseCoordinates.y;
30  nodePortConnectorDragTarget.Drag.active = true;
31  visible = true;
32  setPortsState("highlighted", filter);
33  }
34 
35  function drop() {
36  visible = false;
37  var target = nodePortConnectorDragTarget.Drag.target;
38  nodePortConnectorDragTarget.Drag.active = false;
39  setPortsState("");
40  return target && checkFilterOnTags(target.tags, filter) ? target : undefined;
41  }
42 
43  ShapePath {
44  id: newConnectionShapePath
45  startX: 0
46  startY: 0
47 
48  strokeWidth: nodeView.style.connectionStrokeWidth
49  strokeColor: nodeView.style.connectionStrokeColor
50  fillColor: "transparent"
51 
52  PathLine {
53  id: newConnectionPath
54  x: nodePortConnectorDragTarget.x
55  y: nodePortConnectorDragTarget.y
56  }
57  }
58  }
59 
60  function dragNewConnection(globalConnector, globalMouse, filter) {
61  newConnection.filter = filter || "";
62  newConnection.drag(globalConnector, globalMouse);
63  }
64 
65  function dropNewConnection() {
66  return newConnection.drop();
67  }
68 }