Skip to content
Snippets Groups Projects
Commit 471fb59c authored by Adam Jakobsson's avatar Adam Jakobsson Committed by Felix Goding
Browse files

Update GUI/operation_icons/Absolute.png, GUI/operation_icons/Addition@3x.png,...

Update GUI/operation_icons/Absolute.png, GUI/operation_icons/Addition@3x.png, GUI/operation_icons/Butterfly.png, GUI/operation_icons/ComplexConjugate.png, GUI/operation_icons/Constant.png, GUI/operation_icons/ConstantMultiplication.png, GUI/operation_icons/CustomOperation.png, GUI/operation_icons/Division.png, GUI/operation_icons/Input.png, GUI/operation_icons/Max.png, GUI/operation_icons/Min.png, GUI/operation_icons/Multiplication.png, GUI/operation_icons/Output.png, GUI/operation_icons/Register.png, GUI/operation_icons/SquareRoot.png, GUI/operation_icons/Subtraction.png, GUI/operation_icons/absolute.png, GUI/operation_icons/addition.png, GUI/operation_icons/butterfly.png, GUI/operation_icons/complexConjugate.png, GUI/operation_icons/constant.png, GUI/operation_icons/constantMultiplication.png, GUI/operation_icons/customOperation.png, GUI/operation_icons/division.png, GUI/operation_icons/input.png, GUI/operation_icons/max.png, GUI/operation_icons/min.png, GUI/operation_icons/multiplication.png, GUI/operation_icons/output.png, GUI/operation_icons/register.png, GUI/operation_icons/squareRoot.png, GUI/operation_icons/subtraction.png files
Deleted GUI/operation_icons/minus.png, GUI/operation_icons/plus.png files
parent d8c4f923
No related branches found
No related tags found
2 merge requests!67WIP: B-ASIC version 1.0.0 hotfix,!65B-ASIC version 1.0.0
...@@ -28,5 +28,7 @@ class Arrow(QGraphicsLineItem): ...@@ -28,5 +28,7 @@ class Arrow(QGraphicsLineItem):
def moveLine(self): def moveLine(self):
self.setPen(QPen(Qt.black, 3)) self.setPen(QPen(Qt.black, 3))
self.setLine(QLineF(self.source.x()+50, self.source.y()+25,\ self.setLine(QLineF(self.source.operation.x()+self.source.x()+14,\
self.destination.x(), self.destination.y()+25)) self.source.operation.y()+self.source.y()+7.5,\
\ No newline at end of file self.destination.operation.x()+self.destination.x(),\
self.destination.operation.y()+self.destination.y()+7.5))
...@@ -6,14 +6,12 @@ This class creates a dragbutton which can be clicked, dragged and dropped. ...@@ -6,14 +6,12 @@ This class creates a dragbutton which can be clicked, dragged and dropped.
import os.path import os.path
from PyQt5.QtWidgets import QPushButton, QMenu from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import Qt, QSize, pyqtSignal, QMimeData from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
class DragButton(QPushButton): class DragButton(QPushButton):
connectionRequested = pyqtSignal(QPushButton)
moved = pyqtSignal()
def __init__(self, name, operation, operation_path_name, window, parent = None): def __init__(self, name, operation, operation_path_name, window, parent = None):
self.name = name self.name = name
self.__window = window self.__window = window
...@@ -23,11 +21,6 @@ class DragButton(QPushButton): ...@@ -23,11 +21,6 @@ class DragButton(QPushButton):
self.pressed = False self.pressed = False
super(DragButton, self).__init__(self.__window) super(DragButton, self).__init__(self.__window)
def contextMenuEvent(self, event):
menu = QMenu()
menu.addAction("Connect", lambda: self.connectionRequested.emit(self))
menu.exec_(self.cursor().pos())
def mousePressEvent(self, event): def mousePressEvent(self, event):
self._mouse_press_pos = None self._mouse_press_pos = None
self._mouse_move_pos = None self._mouse_move_pos = None
......
...@@ -3,12 +3,12 @@ B-ASIC GUI Module. ...@@ -3,12 +3,12 @@ B-ASIC GUI Module.
This python file is the main window of the GUI for B-ASIC. This python file is the main window of the GUI for B-ASIC.
""" """
from os import getcwd
import sys import sys
from drag_button import DragButton from drag_button import DragButton
from gui_interface import Ui_main_window from gui_interface import Ui_main_window
from arrow import Arrow from arrow import Arrow
from port_button import PortButton
from b_asic import Constant, Addition, Subtraction, Absolute,\ from b_asic import Constant, Addition, Subtraction, Absolute,\
Multiplication, Division, ConstantMultiplication, SquareRoot, ComplexConjugate,\ Multiplication, Division, ConstantMultiplication, SquareRoot, ComplexConjugate,\
...@@ -51,6 +51,8 @@ class MainWindow(QMainWindow): ...@@ -51,6 +51,8 @@ class MainWindow(QMainWindow):
self.operationList = [] self.operationList = []
self.signalList = [] self.signalList = []
self.pressed_button = [] self.pressed_button = []
self.portList = []
self.pressed_ports = []
self.source = None self.source = None
def init_ui(self): def init_ui(self):
...@@ -77,38 +79,50 @@ class MainWindow(QMainWindow): ...@@ -77,38 +79,50 @@ class MainWindow(QMainWindow):
def add_ports(self, operation): def add_ports(self, operation):
if operation.operation.input_count == 2: if operation.operation.input_count == 2:
self.input_port_1 = QPushButton(">", operation) self.input_port_1 = PortButton(">", operation, window)
self.input_port_1.setFixedSize(15, 15)
self.input_port_1.setStyleSheet("background-color: white") self.input_port_1.setStyleSheet("background-color: white")
self.input_port_1.clicked.connect(self.print_input_port_1)
self.input_port_1.show() self.input_port_1.show()
self.input_port_2 = QPushButton(">", operation) self.input_port_2 = PortButton(">", operation, window)
self.input_port_2.setFixedSize(15, 15)
self.input_port_2.setStyleSheet("background-color: white") self.input_port_2.setStyleSheet("background-color: white")
self.input_port_2.move(0, 33) self.input_port_2.move(0, 35)
self.input_port_2.clicked.connect(self.print_input_port_2)
self.input_port_2.show() self.input_port_2.show()
self.portList.append(self.input_port_1)
self.portList.append(self.input_port_2)
self.input_port_1.connectionRequested.connect(self.connectButton)
self.input_port_2.connectionRequested.connect(self.connectButton)
else: else:
self.input_port_1 = QPushButton(">", operation) self.input_port_1 = PortButton(">", operation, window)
self.input_port_1.setFixedSize(15, 15)
self.input_port_1.setStyleSheet("background-color: white") self.input_port_1.setStyleSheet("background-color: white")
self.input_port_1.move(0, 16) self.input_port_1.move(0, 16)
self.input_port_1.clicked.connect(self.print_input_port_1)
self.input_port_1.show() self.input_port_1.show()
self.portList.append(self.input_port_1)
self.input_port_1.connectionRequested.connect(self.connectButton)
if operation.operation.output_count == 2: if operation.operation.output_count == 2:
self.output_port = QPushButton(">", operation) self.output_port = PortButton(">", operation, window)
self.output_port.setFixedSize(15, 15)
self.output_port.setStyleSheet("background-color: white") self.output_port.setStyleSheet("background-color: white")
self.output_port.move(38, 0) self.output_port.move(38, 0)
self.output_port.clicked.connect(self.print_output_port_1)
self.output_port.show() self.output_port.show()
self.output_port2 = QPushButton(">", operation) self.output_port2 = PortButton(">", operation, window)
self.output_port_2.setFixedSize(15, 15)
self.output_port2.setStyleSheet("background-color: white") self.output_port2.setStyleSheet("background-color: white")
self.output_port2.move(38, 33) self.output_port2.move(38, 33)
self.output_port2.clicked.connect(self.print_output_port_2)
self.output_port2.show() self.output_port2.show()
self.portList.append(self.output_port)
self.portList.append(self.output_port_2)
self.output_port.connectionRequested.connect(self.connectButton)
self.output_port_2.connectionRequested.connect(self.connectButton)
else: else:
self.output_port = QPushButton(">", operation) self.output_port = PortButton(">", operation, window)
self.output_port.setFixedSize(15, 15)
self.output_port.setStyleSheet("background-color: white") self.output_port.setStyleSheet("background-color: white")
self.output_port.move(38, 16) self.output_port.move(38, 20)
self.output_port.clicked.connect(self.print_output_port_1)
self.output_port.show() self.output_port.show()
self.portList.append(self.output_port)
self.output_port.connectionRequested.connect(self.connectButton)
def create_addition_operation(self): def create_addition_operation(self):
self.add_counter += 1 self.add_counter += 1
...@@ -118,28 +132,16 @@ class MainWindow(QMainWindow): ...@@ -118,28 +132,16 @@ class MainWindow(QMainWindow):
self.addition_operation.move(250, 100) self.addition_operation.move(250, 100)
self.addition_operation.setFixedSize(50, 50) self.addition_operation.setFixedSize(50, 50)
self.addition_operation.setStyleSheet("background-color: white; border-style: solid;\ self.addition_operation.setStyleSheet("background-color: white; border-style: solid;\
border-color: black; border-width: 2px; border-radius: 10px") border-color: black; border-width: 2px")
self.addition_operation.setIcon(QIcon(r"operation_icons\addition.png")) self.addition_operation.setIcon(QIcon(r"operation_icons\addition.png"))
self.addition_operation.setIconSize(QSize(50, 50)) self.addition_operation.setIconSize(QSize(50, 50))
self.addition_operation.setParent(None) self.addition_operation.setParent(None)
self.scene.addWidget(self.addition_operation) self.scene.addWidget(self.addition_operation)
self.operationList.append(self.addition_operation) self.operationList.append(self.addition_operation)
self.addition_operation.connectionRequested.connect(self.connectButton)
self.operationList.append(self.addition_operation) self.operationList.append(self.addition_operation)
self.add_ports(self.addition_operation) self.add_ports(self.addition_operation)
def print_input_port_1(self):
print("Input port 1")
def print_input_port_2(self):
print("Input port 2")
def print_output_port_1(self):
print("Output port 1")
def print_output_port_2(self):
print("Output port 2")
def create_subtraction_operation(self): def create_subtraction_operation(self):
self.sub_counter += 1 self.sub_counter += 1
subtraction_object = Subtraction() subtraction_object = Subtraction()
...@@ -423,11 +425,10 @@ class MainWindow(QMainWindow): ...@@ -423,11 +425,10 @@ class MainWindow(QMainWindow):
super().keyPressEvent(event) super().keyPressEvent(event)
def connectButton(self, button): def connectButton(self, button):
if len(self.pressed_button) < 2: if len(self.pressed_ports) < 2:
return return
for i in range(len(self.pressed_ports) - 1):
for i in range(len(self.pressed_button) - 1): line = Arrow(self.pressed_ports[i], self.pressed_ports[i + 1], self)
line = Arrow(self.pressed_button[i], self.pressed_button[i + 1], self)
self.scene.addItem(line) self.scene.addItem(line)
self.signalList.append(line) self.signalList.append(line)
......
import sys
from PyQt5.QtWidgets import QPushButton, QMenu
from PyQt5.QtCore import Qt, pyqtSignal
class PortButton(QPushButton):
connectionRequested = pyqtSignal(QPushButton)
moved = pyqtSignal()
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)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment