From 617098e1d7c65a8192d31ee6571f3d4d0457725b Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Mon, 10 Apr 2023 18:18:43 +0200
Subject: [PATCH] Code cleanup

---
 b_asic/scheduler_gui/axes_item.py       |  4 ----
 b_asic/scheduler_gui/main_window.py     | 24 +++++++++++++-----------
 b_asic/scheduler_gui/operation_item.py  |  5 -----
 b_asic/scheduler_gui/scheduler_event.py | 10 +---------
 b_asic/scheduler_gui/scheduler_item.py  |  3 +--
 5 files changed, 15 insertions(+), 31 deletions(-)

diff --git a/b_asic/scheduler_gui/axes_item.py b/b_asic/scheduler_gui/axes_item.py
index bfea8067..12342aaa 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 98a2b2bd..2ed5db7b 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 67898a18..01d0231a 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 7e6fa0ca..96fa6c1d 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 82c8536a..8a09b7b1 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
-- 
GitLab