Skip to content
Snippets Groups Projects
Commit 6840a5fd authored by Jacob Wahlman's avatar Jacob Wahlman :ok_hand:
Browse files

Include GUI in the setup.py file and fixes for GUI functionality

parent 5f883350
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
include README.md
include LICENSE
include CMakeLists.txt
include b_asic/GUI/operation_icons/*
recursive-include src *.cpp *.h
"""TODO"""
from drag_button import *
from improved_main_window import *
from gui_interface import *
"""
Better ASIC Toolbox GUI.
TODO: More info.
"""
from b_asic.GUI.main_window import *
from b_asic.GUI.about_window import *
from b_asic.GUI.arrow import *
from b_asic.GUI.drag_button import *
from b_asic.GUI.gui_interface import *
from b_asic.GUI.port_button import *
from b_asic.GUI.properties_window import *
from b_asic.GUI.select_sfg_window import *
from b_asic.GUI.show_pc_window import *
from b_asic.GUI.simulate_sfg_window import *
from b_asic.GUI.utils import *
......@@ -5,7 +5,7 @@ QGraphicsLineItem, QGraphicsWidget
from PySide2.QtCore import Qt, QSize, QLineF, QPoint, QRectF
from PySide2.QtGui import QIcon, QFont, QPainter, QPen
from b_asic import Signal
from b_asic.signal import Signal
class Arrow(QGraphicsLineItem):
......
......@@ -5,14 +5,13 @@ This class creates a dragbutton which can be clicked, dragged and dropped.
import os.path
from properties_window import PropertiesWindow
from b_asic.GUI.properties_window import PropertiesWindow
from b_asic.GUI.utils import decorate_class, handle_error
from PySide2.QtWidgets import QPushButton, QMenu, QAction
from PySide2.QtCore import Qt, QSize, Signal
from PySide2.QtGui import QIcon
from utils import decorate_class, handle_error
@decorate_class(handle_error)
class DragButton(QPushButton):
......@@ -93,7 +92,7 @@ class DragButton(QPushButton):
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'}")
path_to_image = os.path.join(os.path.dirname(__file__), '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))
......
......@@ -7,23 +7,26 @@ from pprint import pprint
from os import getcwd, path
import importlib
import logging
logging.basicConfig(level=logging.INFO)
import sys
from about_window import AboutWindow, FaqWindow, KeybindsWindow
from drag_button import DragButton
from gui_interface import Ui_main_window
from arrow import Arrow
from port_button import PortButton
from show_pc_window import ShowPCWindow
from b_asic.GUI.about_window import AboutWindow, FaqWindow, KeybindsWindow
from b_asic.GUI.drag_button import DragButton
from b_asic.GUI.gui_interface import Ui_main_window
from b_asic.GUI.arrow import Arrow
from b_asic.GUI.port_button import PortButton
from b_asic.GUI.show_pc_window import ShowPCWindow
from b_asic.GUI.utils import decorate_class, handle_error
from b_asic.GUI.simulate_sfg_window import SimulateSFGWindow, Plot
from b_asic.GUI.select_sfg_window import SelectSFGWindow
from b_asic import FastSimulation
from b_asic.simulation import Simulation
from b_asic import Operation, SFG, InputPort, OutputPort, Input, Output, FastSimulation
from b_asic.operation import Operation
from b_asic.port import InputPort, OutputPort
from b_asic.signal_flow_graph import SFG
from b_asic.special_operations import Input, Output
import b_asic.core_operations as c_oper
import b_asic.special_operations as s_oper
from utils import decorate_class, handle_error
from simulate_sfg_window import SimulateSFGWindow, Plot
from select_sfg_window import SelectSFGWindow
from b_asic.save_load_structure import *
from numpy import linspace
......@@ -36,12 +39,11 @@ QGraphicsProxyWidget, QInputDialog, QTextEdit, QFileDialog
from PySide2.QtCore import Qt, QSize, QFileInfo
from PySide2.QtGui import QIcon, QFont, QPainter, QPen, QBrush, QKeySequence
from tkinter import Tk
from tkinter.filedialog import askopenfilename, askopenfile
MIN_WIDTH_SCENE = 600
MIN_HEIGHT_SCENE = 520
logging.basicConfig(level=logging.INFO)
@decorate_class(handle_error)
class MainWindow(QMainWindow):
......@@ -387,9 +389,9 @@ class MainWindow(QMainWindow):
border-color: black; border-width: 2px")
self.add_ports(attr_button)
icon_path = path.join("operation_icons", f"{op.type_name().lower()}.png")
icon_path = path.join(path.dirname(__file__), "operation_icons", f"{op.type_name().lower()}.png")
if not path.exists(icon_path):
icon_path = path.join("operation_icons", f"custom_operation.png")
icon_path = path.join(path.dirname(__file__), "operation_icons", f"custom_operation.png")
attr_button.setIcon(QIcon(icon_path))
attr_button.setIconSize(QSize(55, 55))
attr_button.setToolTip("No sfg")
......@@ -532,8 +534,13 @@ class MainWindow(QMainWindow):
self.keybinds_page.show()
if __name__ == "__main__":
def start_gui():
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
if __name__ == "__main__":
start_gui()
......@@ -4,6 +4,7 @@ import sys
from PySide2.QtWidgets import QPushButton, QMenu
from PySide2.QtCore import Qt, Signal
class PortButton(QPushButton):
connectionRequested = Signal(QPushButton)
moved = Signal()
......
......@@ -3,6 +3,7 @@ QLabel, QCheckBox, QGridLayout
from PySide2.QtCore import Qt
from PySide2.QtGui import QDoubleValidator
class PropertiesWindow(QDialog):
def __init__(self, operation, main_window):
super(PropertiesWindow, self).__init__()
......
from b_asic.signal_flow_graph import SFG
from PySide2.QtWidgets import QDialog, QPushButton, QVBoxLayout, QCheckBox,\
QFrame, QFormLayout
from PySide2.QtCore import Qt, Signal
from b_asic import SFG
class ShowPCWindow(QDialog):
pc = Signal()
......@@ -45,4 +46,4 @@ class ShowPCWindow(QDialog):
self._window.sfg_dict[sfg].show_precedence_graph()
self.accept()
self.pc.emit()
\ No newline at end of file
self.pc.emit()
......@@ -4,7 +4,8 @@ Given a structure try to serialize it and save it to a file.
Given a serialized file try to deserialize it and load it to the library.
"""
from b_asic import SFG, GraphComponent
from b_asic.signal_flow_graph import SFG
from b_asic.graph_component import GraphComponent
from datetime import datetime
from inspect import signature
......@@ -76,4 +77,4 @@ def python_to_sfg(path: str) -> SFG:
code = compile(f.read(), path, 'exec')
exec(code, globals(), locals())
return locals()["prop"]["name"], locals()["positions"] if "positions" in locals() else {}
\ No newline at end of file
return locals()["prop"]["name"], locals()["positions"] if "positions" in locals() else {}
......@@ -76,8 +76,9 @@ setuptools.setup(
"graphviz",
"matplotlib"
],
packages = ["b_asic"],
packages = ["b_asic", "b_asic/GUI"],
ext_modules = [CMakeExtension("b_asic")],
cmdclass = {"build_ext": CMakeBuild},
zip_safe = False
zip_safe = False,
include_package_data = True
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment