From a07cecbe12733e036cde3893ff40414d0a75f8ae Mon Sep 17 00:00:00 2001
From: Felix Goding <felgo673@student.liu.se>
Date: Wed, 8 Apr 2020 15:22:03 +0200
Subject: [PATCH] GUI is ready as an alpha prototype

---
 b_asic/GUI/start_window.py | 110 ++++++++++++++++++++++---------------
 1 file changed, 66 insertions(+), 44 deletions(-)

diff --git a/b_asic/GUI/start_window.py b/b_asic/GUI/start_window.py
index 1105437a..4c729821 100644
--- a/b_asic/GUI/start_window.py
+++ b/b_asic/GUI/start_window.py
@@ -1,16 +1,19 @@
+"""
+This python file is an example of how a GUI can be implemented
+using buttons and textboxes.
+"""
 import sys
 
-from PyQt5.QtWidgets import QApplication,QWidget ,QMainWindow, QLabel, QToolBar, QAction, QStatusBar, QHBoxLayout, QVBoxLayout, QCheckBox, QMenu, QMenuBar, QMenuBar, QLineEdit, QPushButton
-from PyQt5.QtCore import Qt, QSize
-from PyQt5.QtGui import QIcon, QFont, QPainter, QBrush, QPen
+from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QLabel, QAction,\
+QStatusBar, QMenuBar, QLineEdit, QPushButton
+from PyQt5.QtCore import Qt
+from PyQt5.QtGui import QIcon, QFont, QPainter, QPen
 
-"""
-https://stackoverflow.com/questions/12219727/dragging-moving-a-qpushbutton-in-pyqt
 
-Hur man skapar en dragbar knapp
-"""
 class DragButton(QPushButton):
-
+    """How to create a dragbutton
+    https://stackoverflow.com/questions/12219727/dragging-moving-a-qpushbutton-in-pyqt
+    """
     def mousePressEvent(self, event):
         self.__mouse_press_pos = None
         self.__mouse_move_pos = None
@@ -22,7 +25,6 @@ class DragButton(QPushButton):
 
     def mouseMoveEvent(self, event):
         if event.buttons() == Qt.LeftButton:
-            # adjust offset from clicked point to origin of widget
             cur_pos = self.mapToGlobal(self.pos())
             global_pos = event.globalPos()
             diff = global_pos - self.__mouse_move_pos
@@ -35,33 +37,35 @@ class DragButton(QPushButton):
 
     def mouseReleaseEvent(self, event):
         if self.__mouse_press_pos is not None:
-            moved = event.globalPos() - self.__mouse_press_pos 
+            moved = event.globalPos() - self.__mouse_press_pos
             if moved.manhattanLength() > 3:
                 event.ignore()
                 return
 
         super(DragButton, self).mouseReleaseEvent(event)
 
-class subwindow(QWidget):
-    def createWindow(self,WindowWidth,WindowHeight):
-       parent=None
-       super(subwindow,self).__init__(parent)
-       self.setWindowFlags(Qt.WindowStaysOnTopHint)
-       self.resize(WindowWidth,WindowHeight)
+class SubWindow(QWidget):
+    """Creates a sub window
+    """
+    def create_window(self, window_width, window_height):
+        """Creates a window
+        """
+        parent = None
+        super(SubWindow, self).__init__(parent)
+        self.setWindowFlags(Qt.WindowStaysOnTopHint)
+        self.resize(window_width, window_height)
 
 class MainWindow(QMainWindow):
+    """Main window for the program
+    """
     def __init__(self, *args, **kwargs):
         super(MainWindow, self).__init__(*args, **kwargs)
 
         self.setWindowTitle(" ")
         self.setWindowIcon(QIcon('small_logo.png'))
-        
-        test_button = QAction("Test", self)
 
-        open_window_button = QPushButton(" Open a new window ", self)
-        open_window_button.clicked.connect(self.create_sub_window)
-        open_window_button.resize(150, 40)
-        open_window_button.move(500, 100)
+        #Menu buttons
+        test_button = QAction("Test", self)
 
         exit_button = QAction("Exit", self)
         exit_button.setShortcut("Ctrl+Q")
@@ -86,28 +90,43 @@ class MainWindow(QMainWindow):
 
         edit_menu = menu_bar.addMenu("&Edit")
         edit_menu.addAction(edit_button)
-        
+
         edit_menu.addSeparator()
 
         view_menu = menu_bar.addMenu("&View")
         view_menu.addAction(view_button)
 
+        # Drag buttons
         addition_button = DragButton("Addition", self)
         addition_button.move(10, 130)
         addition_button.setFixedSize(70, 20)
-        addition_button.clicked.connect(self.clicked)
-        addition_counter = 1
+        addition_button.clicked.connect(self.create_sub_window)
+
+        addition_button2 = DragButton("Addition", self)
+        addition_button2.move(10, 130)
+        addition_button2.setFixedSize(70, 20)
+        addition_button2.clicked.connect(self.create_sub_window)
 
         subtraction_button = DragButton("Subtraction", self)
         subtraction_button.move(10, 170)
         subtraction_button.setFixedSize(70, 20)
-        #subtraction_button.clicked.connect(clicked)
+        subtraction_button.clicked.connect(self.create_sub_window)
+
+        subtraction_button2 = DragButton("Subtraction", self)
+        subtraction_button2.move(10, 170)
+        subtraction_button2.setFixedSize(70, 20)
+        subtraction_button2.clicked.connect(self.create_sub_window)
 
         multiplication_button = DragButton("Multiplication", self)
         multiplication_button.move(10, 210)
         multiplication_button.setFixedSize(70, 20)
-        #multiplication_button.clicked.connect(clicked)
-        
+        multiplication_button.clicked.connect(self.create_sub_window)
+
+        multiplication_button2 = DragButton("Multiplication", self)
+        multiplication_button2.move(10, 210)
+        multiplication_button2.setFixedSize(70, 20)
+        multiplication_button2.clicked.connect(self.create_sub_window)
+
         self.setStatusBar(QStatusBar(self))
 
     def on_file_button_click(self):
@@ -123,23 +142,35 @@ class MainWindow(QMainWindow):
         QApplication.quit()
 
     def clicked(self):
-        print ("Drag button clicked")
-    
+        print("Drag button clicked")
+
     def paintEvent(self, e):
+        # Temporary black box for operations
         painter = QPainter(self)
         painter.setPen(QPen(Qt.black, 5, Qt.SolidLine))
         painter.drawRect(0, 110, 100, 400)
 
+        # Temporary arrow resembling a signal
+        painter.setRenderHint(QPainter.Antialiasing)
+        painter.setPen(Qt.black)
+        painter.setBrush(Qt.white)
+        painter.drawLine(300, 200, 400, 200)
+        painter.drawLine(400, 200, 395, 195)
+        painter.drawLine(400, 200, 395, 205)
+
     def create_sub_window(self):
-        self.sub_window = subwindow()
-        self.sub_window.createWindow(400, 300)
+        """ Example of how to create a sub window
+        """
+        self.sub_window = SubWindow()
+        self.sub_window.create_window(400, 300)
+        self.sub_window.setWindowTitle("Properties")
 
         self.sub_window.properties_label = QLabel(self.sub_window)
         self.sub_window.properties_label.setText('Properties')
         self.sub_window.properties_label.setFixedWidth(400)
         self.sub_window.properties_label.setFont(QFont('SansSerif', 14, QFont.Bold))
         self.sub_window.properties_label.setAlignment(Qt.AlignCenter)
-        
+
         self.sub_window.name_label = QLabel(self.sub_window)
         self.sub_window.name_label.setText('Name:')
         self.sub_window.name_label.move(20, 40)
@@ -158,19 +189,10 @@ class MainWindow(QMainWindow):
         self.sub_window.id_line.move(70, 70)
         self.sub_window.id_line.resize(100, 20)
 
-        """
-        vertical_box = QVBoxLayout()
-        vertical_box.addWidget(self.sub_window.name_label)
-        vertical_box.addWidget(id_label)
-
-        self.sub_window.setLayout(vertical_box)
-        """
-        
 
         self.sub_window.show()
-    
 
-        
+
 
 if __name__ == "__main__":
     app = QApplication(sys.argv)
@@ -180,4 +202,4 @@ if __name__ == "__main__":
 
     window.show()
 
-    app.exec_()
\ No newline at end of file
+    app.exec_()
-- 
GitLab