Skip to content
Snippets Groups Projects
port_button.py 1.26 KiB
Newer Older
  • Learn to ignore specific revisions
  • Jacob Wahlman's avatar
    Jacob Wahlman committed
    from PySide2.QtWidgets import QPushButton, QMenu
    from PySide2.QtCore import Qt, Signal
    
    Jacob Wahlman's avatar
    Jacob Wahlman committed
        connectionRequested = Signal(QPushButton)
        moved = Signal()
    
        def __init__(self, name, operation, window, parent=None):
            self.pressed = False
            self.window = window
            self.operation = operation
            self.clicked = 0
            super(PortButton, self).__init__(name, operation)
    
        def contextMenuEvent(self, event):
            menu = QMenu()
            menu.addAction("Connect", lambda: self.connectionRequested.emit(self))
            menu.exec_(self.cursor().pos())
    
        def mousePressEvent(self, event):
            if event.button() == Qt.LeftButton:
                self.clicked += 1
                if self.clicked == 1:
                    self.setStyleSheet("background-color: grey")
                    self.pressed = True
                    self.window.pressed_ports.append(self)
                elif self.clicked == 2:
                    self.setStyleSheet("background-color: white")
    
                    self.pressed = False
    
                    self.clicked = 0
                    self.window.pressed_ports.remove(self)
            super(PortButton, self).mousePressEvent(event)
    
        def mouseReleaseEvent(self, event):
            super(PortButton, self).mouseReleaseEvent(event)