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

workspace dump

parent d210ae4d
No related branches found
No related tags found
1 merge request!78Add scheduler GUI
Pipeline #73284 passed
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
Graphical user interface for B-ASIC scheduler. Graphical user interface for B-ASIC scheduler.
""" """
from logger import * from logger import *
from main_window import * from main_window import *
from graphics_graph import * from graphics_graph_item import *
from graphics_axis import * from graphics_graph_event import *
from component_item import * from graphics_axis_item import *
from graphics_component_item import *
# __all__ = ['main_window', 'graphics_graph', 'graphics_axis', 'component_item'] # __all__ = ['main_window', 'graphics_graph', 'graphics_axis', 'component_item']
__version__ = '0.1' __version__ = '0.1'
......
...@@ -2,20 +2,15 @@ ...@@ -2,20 +2,15 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""B-ASIC Scheduler-gui Module. """B-ASIC Scheduler-gui Module.
Contains the scheduler-gui class for scheduling operations in an SFG. Contains the scheduler-gui MainWindow class for scheduling operations in an SFG.
Start main-window with start_gui(). Start main-window with start_gui().
""" """
import os import os
import sys import sys
from pathlib import Path from pathlib import Path
from types import ModuleType from types import ModuleType
from typing import Any, Iterable, List from typing import Any, Iterable, List, Sequence, Type
from pprint import pprint from pprint import pprint
#from matplotlib.pyplot import bar #from matplotlib.pyplot import bar
#from diagram import * #from diagram import *
...@@ -120,6 +115,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -120,6 +115,8 @@ class MainWindow(QMainWindow, Ui_MainWindow):
_graph: GraphicsGraphItem _graph: GraphicsGraphItem
_scale: float _scale: float
_debug_rects: QGraphicsItemGroup _debug_rects: QGraphicsItemGroup
_splitter_pos: int
_splitter_min: int
def __init__(self): def __init__(self):
...@@ -133,15 +130,17 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -133,15 +130,17 @@ class MainWindow(QMainWindow, Ui_MainWindow):
QIcon.setThemeName('breeze') QIcon.setThemeName('breeze')
log.debug('themeName: \'{}\''.format(QIcon.themeName())) log.debug('themeName: \'{}\''.format(QIcon.themeName()))
log.debug('themeSearchPaths: {}'.format(QIcon.themeSearchPaths())) log.debug('themeSearchPaths: {}'.format(QIcon.themeSearchPaths()))
self.setupUi(self)
# self._splitter_pos = 0
self._read_settings()
self._init_ui() self._init_ui()
self._init_graphics() self._init_graphics()
self._read_settings() # self._splitter_pos = self.splitter.sizes()[1]
def _init_ui(self) -> None: def _init_ui(self) -> None:
"""Initialize the ui""" """Initialize the ui"""
self.setupUi(self)
# Connect signals to slots # Connect signals to slots
self.menu_load_from_file.triggered .connect(self._load_schedule_from_pyfile) self.menu_load_from_file.triggered .connect(self._load_schedule_from_pyfile)
...@@ -168,6 +167,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -168,6 +167,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.info_table.setItem(i,1,item) self.info_table.setItem(i,1,item)
# Init central-widget splitter # Init central-widget splitter
self._splitter_min = self.splitter.minimumSizeHint().height()
self.splitter.setStretchFactor(0, 1) self.splitter.setStretchFactor(0, 1)
self.splitter.setStretchFactor(1, 0) self.splitter.setStretchFactor(1, 0)
self.splitter.setCollapsible(0, False) self.splitter.setCollapsible(0, False)
...@@ -304,15 +304,16 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -304,15 +304,16 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def toggle_component_info(self, checked: bool) -> None: def toggle_component_info(self, checked: bool) -> None:
"""This method toggles the right hand side info window.""" """This method toggles the right hand side info window."""
# Note: splitter handler index 0 is a hidden splitter handle far most left, use index 1 # Note: splitter handler index 0 is a hidden splitter handle far most left, use index 1
settings = QSettings() # settings = QSettings()
range = self.splitter.getRange(1) # tuple(min, max) _, max = self.splitter.getRange(1) # tuple(min, max)
if checked: if checked:
self.splitter.restoreState(settings.value("mainwindow/splitter/last_state")) if self._splitter_pos < self._splitter_min:
# self.splitter.restoreState(settings.value("splitterSizes")) self.splitter.moveSplitter(max - self._splitter_min, 1)
else:
self.splitter.moveSplitter(max - self._splitter_pos, 1)
else: else:
settings.setValue("mainwindow/splitter/last_state", self.splitter.saveState()) self.splitter.moveSplitter(max, 1)
self.splitter.moveSplitter(range[1], 1)
@Slot(bool) @Slot(bool)
def toggle_exit_dialog(self, checked: bool) -> None: def toggle_exit_dialog(self, checked: bool) -> None:
...@@ -323,13 +324,16 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -323,13 +324,16 @@ class MainWindow(QMainWindow, Ui_MainWindow):
def _splitter_moved(self, pos: int, index: int) -> None: def _splitter_moved(self, pos: int, index: int) -> None:
"""Callback method used to check if the right widget (info window) """Callback method used to check if the right widget (info window)
has collapsed. Update the checkbutton accordingly.""" has collapsed. Update the checkbutton accordingly."""
# TODO: Custom move handler, save state on click-release? width = self.splitter.sizes()[1]
widths: list[int, int] = list(self.splitter.sizes())
if widths[1] == 0: if width == 0:
self.menu_node_info.setChecked(False) if self.menu_node_info.isChecked() is True:
self.menu_node_info.setChecked(False)
else: else:
self.menu_node_info.setChecked(True) if self.menu_node_info.isChecked() is False:
self.menu_node_info.setChecked(True)
self._splitter_pos = width
@Slot('QList<QRectF>') @Slot('QList<QRectF>')
def shrink_scene_to_min_size(self, region: List[QRectF]) -> None: def shrink_scene_to_min_size(self, region: List[QRectF]) -> None:
...@@ -395,6 +399,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -395,6 +399,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
s.setValue('mainwindow/state', self.saveState()) # toolbars, dockwidgets: pos, size s.setValue('mainwindow/state', self.saveState()) # toolbars, dockwidgets: pos, size
s.setValue('mainwindow/menu/node_info', self.menu_node_info.isChecked()) s.setValue('mainwindow/menu/node_info', self.menu_node_info.isChecked())
s.setValue('mainwindow/splitter/state', self.splitter.saveState()) s.setValue('mainwindow/splitter/state', self.splitter.saveState())
s.setValue('mainwindow/splitter/pos', self.splitter.sizes()[1])
if s.isWritable(): if s.isWritable():
log.debug('Settings written to \'{}\'.'.format(s.fileName())) log.debug('Settings written to \'{}\'.'.format(s.fileName()))
...@@ -412,6 +417,7 @@ class MainWindow(QMainWindow, Ui_MainWindow): ...@@ -412,6 +417,7 @@ class MainWindow(QMainWindow, Ui_MainWindow):
self.restoreState( s.value('mainwindow/state', QByteArray())) self.restoreState( s.value('mainwindow/state', QByteArray()))
self.menu_node_info.setChecked( s.value('mainwindow/menu/node_info', True, bool)) self.menu_node_info.setChecked( s.value('mainwindow/menu/node_info', True, bool))
self.splitter.restoreState( s.value('mainwindow/splitter/state', QByteArray())) self.splitter.restoreState( s.value('mainwindow/splitter/state', QByteArray()))
self._splitter_pos = ( s.value('mainwindow/splitter/pos', 200, int))
self.menu_exit_dialog.setChecked( s.value('mainwindow/hide_exit_dialog', False, bool)) self.menu_exit_dialog.setChecked( s.value('mainwindow/hide_exit_dialog', False, bool))
log.debug('Settings read from \'{}\'.'.format(s.fileName())) log.debug('Settings read from \'{}\'.'.format(s.fileName()))
......
...@@ -49,6 +49,9 @@ ...@@ -49,6 +49,9 @@
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
</property> </property>
<property name="handleWidth">
<number>0</number>
</property>
<widget class="QGraphicsView" name="view"> <widget class="QGraphicsView" name="view">
<property name="renderHints"> <property name="renderHints">
<set>QPainter::HighQualityAntialiasing|QPainter::TextAntialiasing</set> <set>QPainter::HighQualityAntialiasing|QPainter::TextAntialiasing</set>
......
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