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

workspace dump

parent 953c17e8
Branches
No related tags found
1 merge request!78Add scheduler GUI
Pipeline #73033 passed
import os
import sys
from typing import Any
from typing import Any, Optional
from pprint import pprint
from typing import Any, AnyStr, Generic, Protocol, TypeVar, Union, Optional, overload, Final, final
# from typing_extensions import Self, Final, Literal, LiteralString, TypeAlias, final
......@@ -20,7 +20,8 @@ from qtpy.QtGui import (
from qtpy.QtWidgets import (
QGraphicsView, QGraphicsScene, QGraphicsWidget,
QGraphicsLayout, QGraphicsLinearLayout, QGraphicsGridLayout, QGraphicsLayoutItem, QGraphicsAnchorLayout,
QGraphicsItem, QGraphicsItemGroup, QGraphicsPathItem)
QGraphicsItem, QGraphicsItemGroup, QGraphicsPathItem,
QStyleOptionGraphicsItem, QWidget)
from qtpy.QtCore import (
QPoint, QPointF)
......@@ -29,20 +30,36 @@ import logger
from b_asic.schedule import Schedule
class ComponentItem(QGraphicsItemGroup, QGraphicsLayoutItem):
# class ComponentItem(QGraphicsItemGroup, QGraphicsLayoutItem):
class ComponentItem(QGraphicsLayoutItem, QGraphicsItem):
# class ComponentItem(QGraphicsLayoutItem, QGraphicsItem):
_scale: float
_component_item: QGraphicsPathItem
_execution_time_item: QGraphicsPathItem
_item_group: QGraphicsItemGroup
# def __init__(self, scale: float, *args, **kwargs):
def __init__(self, scale: float, parent = None):
super().__init__(parent=parent)
def __init__(self, scale: float, *args, **kwargs):
# def __init__(self, scale: float):
super().__init__(*args, **kwargs)
# QGraphicsLayoutItem.__init__()
# QGraphicsItem.__init__(parent = parent)
self._scale = scale
self.setGraphicsItem(self)
print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
self._item_group = QGraphicsItemGroup()
# self._item_group.setParentItem(self)
# print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
self._populate()
# print(self.boundingRect().size())
brush = QBrush(Qt.lightGray, bs=Qt.SolidPattern)
def _populate(self):
# brush = QBrush(Qt.lightGray, bs=Qt.SolidPattern)
brush = QBrush(Qt.lightGray)
pen = QPen(Qt.SolidLine)
pen.setWidthF(2/self._scale)
pen.setBrush(Qt.darkGray)
......@@ -75,16 +92,34 @@ class ComponentItem(QGraphicsItemGroup, QGraphicsLayoutItem):
# item group, consist of time_item and component_item
# item_group = QGraphicsItemGroup()
# graphics_item = self.graphicsItem()
# print(graphics_item)
# self._item_group = graphics_item.childItems()[0]
# print(self._item_group)
# item_group.setScale(self._scale)
self.addToGroup(self._component_item)
self.addToGroup(self._execution_time_item)
self._item_group.addToGroup(self._component_item)
self._item_group.addToGroup(self._execution_time_item)
# self.setGraphicsItem(self)
# QGraphicsItemGroup
# self.setGroup(item_group)
print('Populated!')
# # QGraphicsLayoutItem virtual functions
# def setGeometry(rect): ...
# reimplement QGraphicsLayoutItem virtual functions
def setGeometry(rect):
print(f'setGeometry({rect})')
def sizeHint(self, which: Qt.SizeHint, constraint: QSizeF = QSizeF()) -> QSizeF:
print(f'sizeHint(which={which}, constraint={constraint}')
# return QSizeF(1000, 100)
# if self.isEmpty():
# pass
# item = self.graphicsItem()
switch = {
Qt.MinimumSize: self.boundingRect().size(),
Qt.PreferredSize: self.boundingRect().size(),
......@@ -93,6 +128,14 @@ class ComponentItem(QGraphicsItemGroup, QGraphicsLayoutItem):
return switch.get(which, constraint)
# # QGraphicsItem virtual functions
# def boundingRect(): ...
# def paint(): ...
\ No newline at end of file
# reimplement QGraphicsItem virtual functions
def boundingRect(self) -> QRectF:
print('boundingRect()')
return self._item_group.boundingRect()
def paint(self, painter: QPainter, option: QStyleOptionGraphicsItem, widget: Optional[QWidget]= None) -> None:
print(f'paint(painter={painter}, option={option}, widget={widget})')
return self._item_group.paint(painter, option, widget)
# print("MRO:")
# pprint(ComponentItem.__mro__)
\ No newline at end of file
......@@ -11,6 +11,7 @@ from typing import Any
from pprint import pprint
from typing import Any, AnyStr, Generic, Protocol, TypeVar, Union, Optional, overload, Final, final
# from typing_extensions import Self, Final, Literal, LiteralString, TypeAlias, final
from copy import deepcopy
import numpy as np
import qtpy
......@@ -54,14 +55,14 @@ class GraphicsScene(QGraphicsScene):
self._id = id
if isinstance(schedule, Schedule):
self._schedule = schedule
self._schedule = deepcopy(schedule)
self._scale = 10.0
# print('From GraphicsScene/schedule:\t\t', end='')
# pprint(schedule)
# print('From GraphicsScene/self._schedule:\t', end='')
# pprint(self._schedule)
# print('')
print('From GraphicsScene/schedule:\t\t', end='')
pprint(schedule)
print('From GraphicsScene/self._schedule:\t', end='')
pprint(self._schedule)
print('')
# print('########### _start_times:')
......
......@@ -9,6 +9,7 @@ Start main-window with start_gui().
import os
import sys
from pathlib import Path
......@@ -20,6 +21,7 @@ from pprint import pprint
from importlib.machinery import SourceFileLoader
import inspect
# Qt/qtpy
import qtpy
from qtpy import uic, QtCore, QtGui, QtWidgets
......@@ -44,6 +46,7 @@ from qtpy.QtWidgets import (
import logger
from b_asic.schedule import Schedule
from graphics_scene import GraphicsScene
from component_item import ComponentItem
log = logger.getLogger()
......@@ -107,6 +110,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
"""Schedule of an SFG with scheduled Operations."""
# _schedules: dict
_scenes: dict[str, GraphicsScene]
_scene: QGraphicsScene
_diagrams: dict[str, QGraphicsWidget]
_diagram_count: int
_scene_count: int
_open_file_dialog_opened: bool
_scale: float
......@@ -115,7 +121,9 @@ class MainWindow(QMainWindow, Ui_MainWindow):
"""Initialize Schedule-gui."""
super().__init__()
self._scenes = {}
self._diagrams = {}
self._scene_count = 0
self._diagram_count = 0
self._open_file_dialog_opened = False
self._scale = 10.0
......@@ -133,7 +141,6 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.setupUi(self)
# Connect signals to slots
# self.pushbutton_add .clicked .connect(self.callback_pushButton)
self.menu_load_from_file.triggered .connect(self._load_schedule_from_pyfile)
self.menu_save .triggered .connect(self.save)
self.menu_save_as .triggered .connect(self.save_as)
......@@ -149,8 +156,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# Setup info table
self.info_table.setHorizontalHeaderLabels(['Property','Value'])
# test = '#b085b2'
# self.info_table.setStyleSheet('alternate-background-color: lightGray;background-color: white;');
self.info_table.setStyleSheet('alternate-background-color: #fadefb;background-color: #ebebeb;');
# self.info_table.setStyleSheet('alternate-background-color: lightGray;background-color: white;')
self.info_table.setStyleSheet('alternate-background-color: #fadefb;background-color: #ebebeb;')
for i in range(10):
self.info_table.insertRow(i)
item = QTableWidgetItem('this is a very very very very long string that says abolutly nothing')
......@@ -171,6 +178,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
# self.graphic_view.setGeometry(20, 20, self.width(), self.height())
# self.graphic_view.setDragMode(QGraphicsView.RubberBandDrag)
self.graphics_view.scale(self._scale, self._scale)
self._scene = QGraphicsScene()
self.graphics_view.setScene(self._scene)
......@@ -222,6 +231,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
.format(os.path.basename(abs_path_filename)))
log.info('Could not find any Schedule object in file \'{}\'.'
.format(os.path.basename(abs_path_filename)))
del module
return
ret_tuple = QInputDialog.getItem(self,
......@@ -232,9 +242,11 @@ class MainWindow(QMainWindow, Ui_MainWindow):
if not ret_tuple[1]: # User canceled the operation
log.debug('Load schedule operation: user canceled')
del module
return
self.open(schedule_obj_list[ret_tuple[0]])
del module
#@Slot()
......@@ -245,19 +257,48 @@ class MainWindow(QMainWindow, Ui_MainWindow):
#TODO: Unique hash keys
#TODO: self.open(schedule_obj_list[ret_tuple[0])
scene = GraphicsScene(self._scene_count, schedule, self.graphics_view)
#scene = QGraphicsScene()
self._scenes[self._scene_count] = scene
self.graphics_view.setScene(scene)
# scene = GraphicsScene(self._scene_count, schedule, self.graphics_view)
# #scene = QGraphicsScene()
# self._scenes[self._scene_count] = scene
# self.graphics_view.setScene(scene)
self.graphics_view.setRenderHint(QPainter.Antialiasing)
# self.graphics_view.setGeometry(20, 20, self.width(), self.height())
self.graphics_view.setDragMode(QGraphicsView.RubberBandDrag)
# self.graphics_view.scale(10.0, 10.0)
self._scene_count += 1
# self.graphics_view.setRenderHint(QPainter.Antialiasing)
# # self.graphics_view.setGeometry(20, 20, self.width(), self.height())
# self.graphics_view.setDragMode(QGraphicsView.RubberBandDrag)
# # self.graphics_view.scale(10.0, 10.0)
# self._scene_count += 1
windowLayout = QGraphicsLinearLayout(Qt.Vertical)
# vertical = QGraphicsLinearLayout(Qt.Vertical)
linear1 = QGraphicsLinearLayout(windowLayout)
# linear1 = QGraphicsLinearLayout(Qt.Vertical)
# linear2 = QGraphicsLinearLayout(Qt.Horizontal)
widget = QGraphicsWidget()
item1 = ComponentItem(10.0)
# item2 = ComponentItem(10.0)
# item3 = ComponentItem(10.0)
linear1.addItem(item1)
linear1.setStretchFactor(item1, 1)
# linear1.addItem(item2)
# linear2.addItem(item3)
print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1')
# vertical.addItem(linear1)
# vertical.addItem(linear2)
print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2')
widget.setLayout(windowLayout)
# widget.setLayout(linear1)
widget.setWindowTitle(self.tr("Basic Graphics Layouts Example"))
print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 3')
self._scene.addItem(widget)
print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4')
self._diagrams[self._diagram_count] = widget
self._diagram_count += 1
self.update_statusbar(self.tr('Schedule loaded successfully'))
@Slot()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment