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):
def moveLine(self):
self.setPen(QPen(Qt.black, 3))
self.setLine(QLineF(self.source.x()+50, self.source.y()+25,\
self.destination.x(), self.destination.y()+25))
\ No newline at end of file
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))
......@@ -6,14 +6,12 @@ This class creates a dragbutton which can be clicked, dragged and dropped.
import os.path
from PyQt5.QtWidgets import QPushButton, QMenu
from PyQt5.QtCore import Qt, QSize, pyqtSignal, QMimeData
from PyQt5.QtWidgets import QPushButton
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QIcon
class DragButton(QPushButton):
connectionRequested = pyqtSignal(QPushButton)
moved = pyqtSignal()
def __init__(self, name, operation, operation_path_name, window, parent = None):
self.name = name
self.__window = window
......@@ -23,11 +21,6 @@ class DragButton(QPushButton):
self.pressed = False
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):
self._mouse_press_pos = None
self._mouse_move_pos = None
......
......@@ -3,12 +3,12 @@ B-ASIC GUI Module.
This python file is the main window of the GUI for B-ASIC.
"""
from os import getcwd
import sys
from drag_button import DragButton
from gui_interface import Ui_main_window
from arrow import Arrow
from port_button import PortButton
from b_asic import Constant, Addition, Subtraction, Absolute,\
Multiplication, Division, ConstantMultiplication, SquareRoot, ComplexConjugate,\
......@@ -51,6 +51,8 @@ class MainWindow(QMainWindow):
self.operationList = []
self.signalList = []
self.pressed_button = []
self.portList = []
self.pressed_ports = []
self.source = None
def init_ui(self):
......@@ -77,38 +79,50 @@ class MainWindow(QMainWindow):
def add_ports(self, operation):
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.clicked.connect(self.print_input_port_1)
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.move(0, 33)
self.input_port_2.clicked.connect(self.print_input_port_2)
self.input_port_2.move(0, 35)
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:
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.move(0, 16)
self.input_port_1.clicked.connect(self.print_input_port_1)
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:
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.move(38, 0)
self.output_port.clicked.connect(self.print_output_port_1)
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.move(38, 33)
self.output_port2.clicked.connect(self.print_output_port_2)
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:
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.move(38, 16)
self.output_port.clicked.connect(self.print_output_port_1)
self.output_port.move(38, 20)
self.output_port.show()
self.portList.append(self.output_port)
self.output_port.connectionRequested.connect(self.connectButton)
def create_addition_operation(self):
self.add_counter += 1
......@@ -118,28 +132,16 @@ class MainWindow(QMainWindow):
self.addition_operation.move(250, 100)
self.addition_operation.setFixedSize(50, 50)
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.setIconSize(QSize(50, 50))
self.addition_operation.setParent(None)
self.scene.addWidget(self.addition_operation)
self.operationList.append(self.addition_operation)
self.addition_operation.connectionRequested.connect(self.connectButton)
self.operationList.append(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):
self.sub_counter += 1
subtraction_object = Subtraction()
......@@ -423,11 +425,10 @@ class MainWindow(QMainWindow):
super().keyPressEvent(event)
def connectButton(self, button):
if len(self.pressed_button) < 2:
if len(self.pressed_ports) < 2:
return
for i in range(len(self.pressed_button) - 1):
line = Arrow(self.pressed_button[i], self.pressed_button[i + 1], self)
for i in range(len(self.pressed_ports) - 1):
line = Arrow(self.pressed_ports[i], self.pressed_ports[i + 1], self)
self.scene.addItem(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