Skip to content
Snippets Groups Projects

Resolve "Simulate SFG in GUI"

Merged Jacob Wahlman requested to merge 88-simulate-sfg-in-gui into develop
Files
7
+ 48
35
@@ -26,6 +26,8 @@ class DragButton(QPushButton):
self.operation_path_name = operation_path_name
self.clicked = 0
self.pressed = False
self._m_press = False
self._m_drag = False
self._mouse_press_pos = None
self._mouse_move_pos = None
super(DragButton, self).__init__(self._window)
@@ -37,7 +39,7 @@ class DragButton(QPushButton):
properties.triggered.connect(self.show_properties_window)
menu.exec_(self.cursor().pos())
def show_properties_window(self, event):
def show_properties_window(self):
self.properties_window = PropertiesWindow(self, self._window)
self.properties_window.show()
@@ -45,55 +47,66 @@ class DragButton(QPushButton):
self.label = label
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
self._m_press = True
self._mouse_press_pos = event.pos()
self._mouse_move_pos = event.pos()
for signal in self._window.signalList:
signal.update()
self.clicked += 1
if self.clicked == 1:
self.pressed = True
self.setStyleSheet("background-color: grey; border-style: solid;\
border-color: black; border-width: 2px; border-radius: 10px")
self.setStyleSheet(""" QToolTip { background-color: white;
color: black }""")
path_to_image = os.path.join('operation_icons', self.operation_path_name + '_grey.png')
self.setIcon(QIcon(path_to_image))
self.setIconSize(QSize(55, 55))
self._window.pressed_operations.append(self)
elif self.clicked == 2:
self.clicked = 0
self.pressed = False
self.setStyleSheet("background-color: white; border-style: solid;\
border-color: black; border-width: 2px; border-radius: 10px")
self.setStyleSheet(""" QToolTip { background-color: white;
color: black}""")
path_to_image = os.path.join('operation_icons', self.operation_path_name + '.png')
self.setIcon(QIcon(path_to_image))
self.setIconSize(QSize(55, 55))
self._window.pressed_operations.remove(self)
super(DragButton, self).mousePressEvent(event)
def mouseMoveEvent(self, event):
if event.buttons() == Qt.LeftButton:
if event.buttons() == Qt.LeftButton and self._m_press:
self._m_drag = True
self.move(self.mapToParent(event.pos() - self._mouse_press_pos))
for button in self._window.pressed_operations:
if button is self:
continue
button.move(button.mapToParent(event.pos() - self._mouse_press_pos))
self._window.update()
super(DragButton, self).mouseMoveEvent(event)
def mouseReleaseEvent(self, event):
if self._mouse_press_pos is not None:
moved = event.pos() - self._mouse_press_pos
if moved.manhattanLength() > 3:
event.ignore()
return
self._m_press = False
if self._m_drag:
if self._mouse_press_pos is not None:
moved = event.pos() - self._mouse_press_pos
if moved.manhattanLength() > 3:
event.ignore()
self._m_drag = False
else:
self.select_button(event.modifiers())
super(DragButton, self).mouseReleaseEvent(event)
def _toggle_button(self, pressed=False):
self.pressed = not pressed
self.setStyleSheet(f"background-color: {'white' if not self.pressed else 'grey'}; border-style: solid;\
border-color: black; border-width: 2px")
path_to_image = os.path.join('operation_icons', f"{self.operation_path_name}{'_grey.png' if self.pressed else '.png'}")
self.setIcon(QIcon(path_to_image))
self.setIconSize(QSize(55, 55))
def select_button(self, modifiers=None):
if modifiers != Qt.ControlModifier:
for button in self._window.pressed_operations:
button._toggle_button(button.pressed)
self._toggle_button(self.pressed)
self._window.pressed_operations = [self]
else:
self._toggle_button(self.pressed)
if self in self._window.pressed_operations:
self._window.pressed_operations.remove(self)
else:
self._window.pressed_operations.append(self)
for signal in self._window.signalList:
signal.update()
def remove(self):
self.deleteLater()
\ No newline at end of file
Loading