diff --git a/b_asic/scheduler_gui/axes_item.py b/b_asic/scheduler_gui/axes_item.py index bfea80673e824926be7d951a9b01a6f15ab83e88..12342aaa249826fe2fdb6977eca282754df9644f 100644 --- a/b_asic/scheduler_gui/axes_item.py +++ b/b_asic/scheduler_gui/axes_item.py @@ -115,10 +115,6 @@ class AxesItem(QGraphicsItemGroup): # TODO: update, needed? # self._timeline.setParentItem(None) self._event_items = [] - keys = list(self._axes.keys()) - for key in keys: - self._axes[key].setParentItem(None) - del self._axes[key] @property def width(self) -> int: diff --git a/b_asic/scheduler_gui/main_window.py b/b_asic/scheduler_gui/main_window.py index 98a2b2bdb8f2810b1f4410d06508c781539a7a5c..2ed5db7b5347a375e87ed1478629a0e4a76c9afa 100644 --- a/b_asic/scheduler_gui/main_window.py +++ b/b_asic/scheduler_gui/main_window.py @@ -14,7 +14,7 @@ import webbrowser from collections import deque from copy import deepcopy from importlib.machinery import SourceFileLoader -from typing import Deque, List, Optional, cast +from typing import TYPE_CHECKING, Deque, List, Optional, cast # Qt/qtpy import qtpy @@ -58,7 +58,10 @@ from b_asic.scheduler_gui.scheduler_item import SchedulerItem sys.path.insert(0, "icons/") # Needed for *.rc.py files in ui_main_window from b_asic.scheduler_gui.ui_main_window import Ui_MainWindow -log = logger.getLogger() +if TYPE_CHECKING: + from logging import Logger + +log: "Logger" = logger.getLogger() sys.excepthook = logger.handle_exceptions @@ -116,6 +119,13 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow): self.setupUi(self) self._read_settings() self._init_ui() + + # Recent files + self._max_recent_files = 4 + self._recent_files_actions: List[QAction] = [] + self._recent_file_paths: Deque[str] = deque(maxlen=self._max_recent_files) + self._create_recent_file_actions_and_menus() + self._init_graphics() def _init_ui(self) -> None: @@ -149,12 +159,6 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow): self.splitter.setCollapsible(0, False) self.splitter.setCollapsible(1, True) - # Recent files - self._max_recent_files = 4 - self._recent_files_actions: List[QAction] = [] - self._recent_file_paths: Deque[str] = deque(maxlen=self._max_recent_files) - self._create_recent_file_actions_and_menus() - def _init_graphics(self) -> None: """Initialize the QGraphics framework""" self._scene = QGraphicsScene() @@ -527,9 +531,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow): ) # window: maximized, in X11 - always False settings.setValue("scheduler/pos", self.pos()) # window: pos settings.setValue("scheduler/size", self.size()) # window: size - settings.setValue( - "scheduler/state", self.saveState() - ) # toolbars, dockwidgets: pos, size + settings.setValue("scheduler/state", self.saveState()) settings.setValue("scheduler/menu/node_info", self.menu_node_info.isChecked()) settings.setValue("scheduler/splitter/state", self.splitter.saveState()) settings.setValue("scheduler/splitter/pos", self.splitter.sizes()[1]) diff --git a/b_asic/scheduler_gui/operation_item.py b/b_asic/scheduler_gui/operation_item.py index 67898a184acc22440b96438fec12e82e4dfdc906..01d0231a23d8dcd7fa4dd58e3f22560b0fe971d5 100644 --- a/b_asic/scheduler_gui/operation_item.py +++ b/b_asic/scheduler_gui/operation_item.py @@ -134,11 +134,6 @@ class OperationItem(QGraphicsItemGroup): self._height = height self._make_component() - @property - def end_time(self) -> int: - """The relative end time.""" - return self._end_time - @property def event_items(self) -> List[QGraphicsItem]: """List of objects that receives events.""" diff --git a/b_asic/scheduler_gui/scheduler_event.py b/b_asic/scheduler_gui/scheduler_event.py index 7e6fa0ca8de5d882d9d220a60c37488445f48f76..96fa6c1dccd0045d3a58bcb99d729962806ac0dc 100644 --- a/b_asic/scheduler_gui/scheduler_event.py +++ b/b_asic/scheduler_gui/scheduler_event.py @@ -11,15 +11,7 @@ from typing import List, Optional, overload # QGraphics and QPainter imports from qtpy.QtCore import QEvent, QObject, QPointF, Signal -from qtpy.QtGui import QFocusEvent -from qtpy.QtWidgets import ( - QGraphicsItem, - QGraphicsSceneContextMenuEvent, - QGraphicsSceneDragDropEvent, - QGraphicsSceneHoverEvent, - QGraphicsSceneMouseEvent, - QGraphicsSceneWheelEvent, -) +from qtpy.QtWidgets import QGraphicsItem, QGraphicsSceneMouseEvent from b_asic.schedule import Schedule from b_asic.scheduler_gui._preferences import OPERATION_GAP, OPERATION_HEIGHT diff --git a/b_asic/scheduler_gui/scheduler_item.py b/b_asic/scheduler_gui/scheduler_item.py index 82c8536a76a4895c0766107431a67a8618449ef1..8a09b7b1d94a3cdb96f0c06c33fec0a9367c6959 100644 --- a/b_asic/scheduler_gui/scheduler_item.py +++ b/b_asic/scheduler_gui/scheduler_item.py @@ -99,7 +99,6 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup): # PySide2 / PyQt5 # TODO: implement if self.schedule is None: raise ValueError("No schedule installed.") - end_time = item.end_time new_start_time = floor(pos) - floor(self._x_axis_indent) slacks = self.schedule.slacks(item.graph_id) op_start_time = self.schedule.start_time_of_operation(item.graph_id) @@ -116,7 +115,7 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup): # PySide2 / PyQt5 else: if pos < 0: return False - if new_start_time + end_time > self.schedule.schedule_time: + if new_start_time + item.operation.latency > self.schedule.schedule_time: return False return True