Skip to content
Snippets Groups Projects
Commit e708608f authored by Felix Goding's avatar Felix Goding
Browse files

Merge branch 'develop' of https://gitlab.liu.se/PUM_TDDD96/B-ASIC into...

Merge branch 'develop' of https://gitlab.liu.se/PUM_TDDD96/B-ASIC into 81-change-properties-of-operations-in-gui
parents 4e0b6098 08eaa299
No related branches found
No related tags found
1 merge request!45Resolve "Change properties of operations in GUI"
Pipeline #14887 passed
......@@ -3,7 +3,6 @@ Drag button class.
This class creates a dragbutton which can be clicked, dragged and dropped.
"""
import os.path
from properties_window import PropertiesWindow
......@@ -12,19 +11,22 @@ from PyQt5.QtWidgets import QPushButton, QMenu, QAction
from PyQt5.QtCore import Qt, QSize, pyqtSignal
from PyQt5.QtGui import QIcon
from utils import decorate_class, handle_error
@decorate_class(handle_error)
class DragButton(QPushButton):
connectionRequested = pyqtSignal(QPushButton)
moved = pyqtSignal()
def __init__(self, name, operation, operation_path_name, is_show_name, window, parent = None):
self.name = name
self.is_show_name = is_show_name
self.__window = window
self._window = window
self.operation = operation
self.operation_path_name = operation_path_name
self.clicked = 0
self.pressed = False
super(DragButton, self).__init__(self.__window)
super(DragButton, self).__init__(self._window)
def contextMenuEvent(self, event):
menu = QMenu()
......@@ -48,7 +50,7 @@ class DragButton(QPushButton):
self._mouse_press_pos = event.globalPos()
self._mouse_move_pos = event.globalPos()
for signal in self.__window.signalList:
for signal in self._window.signalList:
signal.update()
self.clicked += 1
......@@ -59,7 +61,7 @@ class DragButton(QPushButton):
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_button.append(self)
self._window.pressed_button.append(self)
elif self.clicked == 2:
self.clicked = 0
......@@ -69,7 +71,7 @@ class DragButton(QPushButton):
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_button.remove(self)
self._window.pressed_button.remove(self)
super(DragButton, self).mousePressEvent(event)
......@@ -82,8 +84,8 @@ class DragButton(QPushButton):
self.move(new_pos)
self._mouse_move_pos = global_pos
self.__window.update()
self._window.update()
super(DragButton, self).mouseMoveEvent(event)
def mouseReleaseEvent(self, event):
......
......@@ -14,6 +14,7 @@ from port_button import PortButton
from b_asic import Operation
import b_asic.core_operations as c_oper
import b_asic.special_operations as s_oper
from utils import decorate_class, handle_error
from numpy import linspace
......@@ -25,7 +26,7 @@ QGraphicsProxyWidget
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QIcon, QFont, QPainter, QPen, QBrush, QKeySequence
@decorate_class(handle_error)
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
......@@ -42,6 +43,7 @@ class MainWindow(QMainWindow):
self.portList = []
self.pressed_ports = []
self.source = None
self._window = self
self.init_ui()
self.add_operations_from_namespace(c_oper, self.ui.core_operations_list)
......
from PyQt5.QtWidgets import QErrorMessage
from traceback import format_exc
def handle_error(fn):
def wrapper(self, *args, **kwargs):
try:
return fn(self, *args, **kwargs)
except Exception as e:
QErrorMessage(self._window).showMessage(f"Unexpected error: {format_exc()}")
return wrapper
def decorate_class(decorator):
def decorate(cls):
for attr in cls.__dict__:
if callable(getattr(cls, attr)):
setattr(cls, attr, decorator(getattr(cls, attr)))
return cls
return decorate
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment