Newer
Older
from PySide2.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QAction,\

Felix Goding
committed
QStatusBar, QMenuBar, QLineEdit, QPushButton, QSlider, QScrollArea, QVBoxLayout,\
QHBoxLayout, QDockWidget, QToolBar, QMenu, QLayout, QSizePolicy, QListWidget, QListWidgetItem,\
QGraphicsLineItem, QGraphicsWidget
from PySide2.QtCore import Qt, QSize, QLineF, QPoint, QRectF
from PySide2.QtGui import QIcon, QFont, QPainter, QPen

Felix Goding
committed

Felix Goding
committed
class Arrow(QGraphicsLineItem):
def __init__(self, source, destination, window, create_signal=True, parent=None):

Felix Goding
committed
super(Arrow, self).__init__(parent)
self.source = source
# if an signal does not exist create one
if create_signal:
self.signal = Signal(source.port, destination.port)

Felix Goding
committed
self.destination = destination
self._window = window
self.moveLine()
self.source.moved.connect(self.moveLine)
self.destination.moved.connect(self.moveLine)
def contextMenuEvent(self, event):
menu = QMenu()
menu.addAction("Delete", self.remove)
menu.exec_(self.cursor().pos())
def remove(self):
self.signal.remove_destination()
self.signal.remove_source()

Felix Goding
committed
self._window.scene.removeItem(self)
self._window.signalList.remove(self)
def moveLine(self):
self.setPen(QPen(Qt.black, 3))

Adam Jakobsson
committed
self.setLine(QLineF(self.source.operation.x()+self.source.x()+14,\
self.source.operation.y()+self.source.y()+7.5,\
self.destination.operation.x()+self.destination.x(),\
self.destination.operation.y()+self.destination.y()+7.5))