Skip to content
Snippets Groups Projects
Commit f0c6ca92 authored by Andreas Bolin's avatar Andreas Bolin
Browse files

workspace dump

parent 032d62cc
Branches
No related tags found
1 merge request!78Add scheduler GUI
Pipeline #72659 passed
...@@ -4,20 +4,19 @@ Contains the scheduler-gui class for scheduling operations in an SFG. ...@@ -4,20 +4,19 @@ Contains the scheduler-gui class for scheduling operations in an SFG.
""" """
# This Python file uses the following encoding: utf-8 # This Python file uses the following encoding: utf-8
import os import os, sys
from pathlib import Path from pathlib import Path
import sys
from typing import Any from typing import Any
from pytest import ExitCode
#from matplotlib.pyplot import bar #from matplotlib.pyplot import bar
#from diagram import * #from diagram import *
from qtpy import uic, QtCore, QtGui, QtWidgets from qtpy import uic, QtCore, QtGui, QtWidgets
from qtpy.QtCore import Qt, Slot from qtpy.QtCore import Qt, Slot, QSettings
from qtpy.QtGui import QCloseEvent
from qtpy.QtWidgets import QApplication, QMainWindow, QMessageBox from qtpy.QtWidgets import QApplication, QMainWindow, QMessageBox
# QPainter imports # QPainter imports
from qtpy.QtWidgets import QGraphicsView, QGraphicsScene from qtpy.QtWidgets import QGraphicsView, QGraphicsScene, QMessageBox
from qtpy.QtGui import ( from qtpy.QtGui import (
QPaintEvent, QPainter, QPainterPath, QColor, QBrush, QPen, QFont, QPolygon, QPaintEvent, QPainter, QPainterPath, QColor, QBrush, QPen, QFont, QPolygon,
QLinearGradient) QLinearGradient)
...@@ -72,7 +71,6 @@ if __debug__: ...@@ -72,7 +71,6 @@ if __debug__:
argv = ' '.join(argv) argv = ' '.join(argv)
print("DEBUG: Running in debug mode. To disable, start program with: '" + argv + "'") print("DEBUG: Running in debug mode. To disable, start program with: '" + argv + "'")
# Only availible when the form is compiled # Only availible when the form is compiled
from ui.main_window_ui import Ui_MainWindow from ui.main_window_ui import Ui_MainWindow
...@@ -82,20 +80,17 @@ from ui.main_window_ui import Ui_MainWindow ...@@ -82,20 +80,17 @@ from ui.main_window_ui import Ui_MainWindow
class MainWindow(QMainWindow, Ui_MainWindow): class MainWindow(QMainWindow, Ui_MainWindow):
"""Schedule of an SFG with scheduled Operations.""" """Schedule of an SFG with scheduled Operations."""
#_ui: QMainWindow # <class '__main__.Ui_MainWindow'> _settings: QSettings
#_widget: QMainWindow # <class 'PyQt5.QtWidgets.QMainWindow'>
#ui = Ui_MainWindow() # DEBUG, remove later
def __init__(self): def __init__(self):
"""Construct a Schedule from an SFG and show it in the UI.""" """Initialize Schedule-gui."""
super(MainWindow, self).__init__() super(MainWindow, self).__init__()
self._init_ui() self._init_ui()
self._init_graphics_view() self._init_graphics_view()
def _init_ui(self):
def _init_ui(self) -> None:
# self._ui = uic.loadUi("main_window.ui", None) # Load the .ui file # self._ui = uic.loadUi("main_window.ui", None) # Load the .ui file
# #self._ui.setupUi(self) # #self._ui.setupUi(self)
# print('self:\t\t' + str(type(self))) # print('self:\t\t' + str(type(self)))
...@@ -115,55 +110,102 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -115,55 +110,102 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# else: # else:
# uic.loadUi("main_window.ui", self) # Load the .ui file # uic.loadUi("main_window.ui", self) # Load the .ui file
self._settings = QSettings()
self.setupUi(self) self.setupUi(self)
# Init signals/slots
self.pushbutton_add.clicked.connect(self.callback_pushButton) self.pushbutton_add.clicked.connect(self.callback_pushButton)
self.menu_load_sfg.triggered.connect(self.load_sfg) self.menu_load_sfg.triggered.connect(self.open)
self.menu_save_schedule.triggered.connect(self.save_schedule) self.menu_save_schedule.triggered.connect(self.save)
self.menu_quit.triggered.connect(self.close) self.menu_quit.triggered.connect(self.close)
self.menu_node_info.triggered.connect(self.toggle_node_info) self.menu_node_info.triggered.connect(self._toggle_component_info)
#self.show() self.splitter_center.splitterMoved.connect(self._splitter_center_moved)
#print('self:\t\t' + str(type(self))) # Init info sidebar
for i in range(10):
def _init_graphics_view(self): self.listWidget.addItem('this is a very very very very long string that says abolutly nothing' + str(i))
self.setCentralWidget(self.graphicsView) self.listWidget.addItem('this is a short string' + str(i))
# Init central-widget splitter
self.splitter_center.setStretchFactor(0, 1)
self.splitter_center.setStretchFactor(1, 0)
self.splitter_center.setCollapsible(0, False)
self.splitter_center.setCollapsible(1, True)
def _init_graphics_view(self) -> None:
pass
#self.setCentralWidget(self.graphicsView)
# pass # pass
# self.scene = QGraphicsScene(self) self.graphic_scene = QGraphicsScene(self)
# self.graphic_view = QGraphicsView(self.scene, self) self.graphic_view.setScene(self.graphic_scene)
# self.graphic_view.setRenderHint(QPainter.Antialiasing) #self.graphic_view = QGraphicsView(self.scene, self)
# self.graphic_view.setGeometry(20, 20, self.width(), self.height()) self.graphic_view.setRenderHint(QPainter.Antialiasing)
# self.graphic_view.setDragMode(QGraphicsView.RubberBandDrag) self.graphic_view.setGeometry(20, 20, self.width(), self.height())
self.graphic_view.setDragMode(QGraphicsView.RubberBandDrag)
# print(self.centralwidget.baseSize()) # print(self.centralwidget.baseSize())
#self.setupUi(self) # Need to setup ui again #self.setupUi(self) # Need to setup ui again
###############
#### Slots ####
###############
@Slot() @Slot()
def callback_pushButton(self): def callback_pushButton(self) -> None:
#diagram = Diagram() #diagram = Diagram()
self.printButtonPressed('callback_pushButton') self.printButtonPressed('callback_pushButton')
@Slot() @Slot()
def load_sfg(self): def open(self) -> None:
"""This method loads an SFG and create a base schedule in gui."""
#TODO: all
self.printButtonPressed('load_sfg()') self.printButtonPressed('load_sfg()')
self.update_statusbar('SFG loaded successfully') self.update_statusbar('SFG loaded successfully')
@Slot() @Slot()
def save_schedule(self): def save(self) -> None:
"""This method save an schedule."""
#TODO: all
self.printButtonPressed('save_schedule()') self.printButtonPressed('save_schedule()')
self.update_statusbar('Schedule saved successfully') self.update_statusbar('Schedule saved successfully')
@Slot(bool) @Slot(bool)
def toggle_node_info(self, checked: bool): def _toggle_component_info(self, checked: bool) -> None:
#if _ui.actionNode_info. widths = list(self.splitter_center.sizes())
print(type(checked)) max_range = widths[0] + widths[1]
print(checked) if checked:
self.printButtonPressed('toggle_node_info()') self.splitter_center.restoreState(self._settings.value("splitterSizes"));
#self.update_statusbar() else:
self._settings.setValue("splitterSizes", self.splitter_center.saveState());
self.splitter_center.moveSplitter(max_range, 1) # Note: splitter index starts at 1
@Slot(int, int)
def _splitter_center_moved(self, pos: int, index: int) -> None:
widths: list[int, int] = list(self.splitter_center.sizes())
#TODO: Custom move handler, save state on click-release?
if widths[1] == 0:
self.menu_node_info.setChecked(False)
else:
self.menu_node_info.setChecked(True)
################
#### Events ####
################
def closeEvent(self, event: QCloseEvent) -> None:
"""Overloads QMainWindow default closeEvent(QCloseEvent) event"""
QMessageBox.StandardButton resBtn = QMessageBox::question( this, APP_NAME,
self.tr("Are you sure?\n"),
QMessageBox::Cancel | QMessageBox::No | QMessageBox::Yes,
QMessageBox::Yes);
pass
def printButtonPressed(self, func_name: str): #################################
#### Helper member functions ####
#################################
def printButtonPressed(self, func_name: str) -> None:
#TODO: remove
self.label.setText("hello") self.label.setText("hello")
...@@ -171,7 +213,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -171,7 +213,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
alert.setText("Called from " + func_name + '!') alert.setText("Called from " + func_name + '!')
alert.exec_() alert.exec_()
def update_statusbar(self, msg: str): def update_statusbar(self, msg: str) -> None:
"""Write the given str to the statusbar with temporarily policy."""
self.statusbar.showMessage(msg) self.statusbar.showMessage(msg)
......
...@@ -30,32 +30,48 @@ ...@@ -30,32 +30,48 @@
<verstretch>0</verstretch> <verstretch>0</verstretch>
</sizepolicy> </sizepolicy>
</property> </property>
<widget class="QWidget" name="layoutWidget"> <layout class="QHBoxLayout" name="horizontalLayout">
<property name="geometry"> <property name="spacing">
<rect> <number>0</number>
<x>30</x>
<y>90</y>
<width>258</width>
<height>225</height>
</rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <property name="leftMargin">
<item> <number>0</number>
<layout class="QHBoxLayout" name="horizontalLayout"> </property>
<item> <property name="topMargin">
<widget class="QLabel" name="label"> <number>0</number>
<property name="text"> </property>
<string>TextLabel</string> <property name="rightMargin">
</property> <number>0</number>
</widget> </property>
</item> <property name="bottomMargin">
</layout> <number>0</number>
</item> </property>
<item> <item>
<widget class="QGraphicsView" name="graphicsView"/> <widget class="QSplitter" name="splitter_center">
</item> <property name="orientation">
</layout> <enum>Qt::Horizontal</enum>
</widget> </property>
<widget class="QGraphicsView" name="graphic_view"/>
<widget class="QListWidget" name="listWidget">
<property name="enabled">
<bool>true</bool>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
<property name="baseSize">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</widget>
</widget>
</item>
</layout>
</widget> </widget>
<widget class="QMenuBar" name="menubar"> <widget class="QMenuBar" name="menubar">
<property name="geometry"> <property name="geometry">
...@@ -96,32 +112,42 @@ ...@@ -96,32 +112,42 @@
<number>4</number> <number>4</number>
</attribute> </attribute>
<widget class="QWidget" name="dockWidgetContents_2"> <widget class="QWidget" name="dockWidgetContents_2">
<widget class="QPushButton" name="pushbutton_add"> <layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="geometry"> <item>
<rect> <widget class="QPushButton" name="pushbutton_add">
<x>30</x> <property name="text">
<y>0</y> <string>+</string>
<width>81</width> </property>
<height>23</height> </widget>
</rect> </item>
</property> <item>
<property name="text"> <widget class="QPushButton" name="pushbutton_remove">
<string>+</string> <property name="text">
</property> <string>-</string>
</widget> </property>
<widget class="QPushButton" name="pushbutton_remove"> </widget>
<property name="geometry"> </item>
<rect> <item>
<x>190</x> <widget class="QLabel" name="label">
<y>0</y> <property name="text">
<width>61</width> <string>TextLabel</string>
<height>23</height> </property>
</rect> </widget>
</property> </item>
<property name="text"> <item>
<string>-</string> <spacer name="horizontalSpacer">
</property> <property name="orientation">
</widget> <enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget> </widget>
</widget> </widget>
<widget class="QToolBar" name="toolBar"> <widget class="QToolBar" name="toolBar">
...@@ -136,6 +162,7 @@ ...@@ -136,6 +162,7 @@
</attribute> </attribute>
<addaction name="menu_load_sfg"/> <addaction name="menu_load_sfg"/>
<addaction name="menu_save_schedule"/> <addaction name="menu_save_schedule"/>
<addaction name="menu_node_info"/>
</widget> </widget>
<action name="menu_load_sfg"> <action name="menu_load_sfg">
<property name="text"> <property name="text">
...@@ -163,9 +190,15 @@ ...@@ -163,9 +190,15 @@
<property name="checkable"> <property name="checkable">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="checked">
<bool>true</bool>
</property>
<property name="text"> <property name="text">
<string>&amp;Node info</string> <string>&amp;Node info</string>
</property> </property>
<property name="toolTip">
<string>Show node information</string>
</property>
<property name="shortcut"> <property name="shortcut">
<string>Ctrl+I</string> <string>Ctrl+I</string>
</property> </property>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment