From d3e9250ea47f189c82da3aa3252e6bc5e25a80df Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson <oscar.gustafsson@gmail.com> Date: Mon, 23 Jan 2023 16:05:12 +0100 Subject: [PATCH] Fix reverse wrapping --- b_asic/scheduler_gui/graphics_graph_event.py | 6 ++++ b_asic/scheduler_gui/graphics_graph_item.py | 29 ++++++++++++-------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/b_asic/scheduler_gui/graphics_graph_event.py b/b_asic/scheduler_gui/graphics_graph_event.py index 7af6938a..8f06d4b0 100644 --- a/b_asic/scheduler_gui/graphics_graph_event.py +++ b/b_asic/scheduler_gui/graphics_graph_event.py @@ -229,8 +229,14 @@ class GraphicsGraphEvent: # PyQt5 self.set_item_inactive(item) self.set_new_starttime(item) pos = item.x() + redraw = False + if pos < 0: + pos += self.schedule.schedule_time + redraw = True if pos > self.schedule.schedule_time: pos = pos % self.schedule.schedule_time + redraw = True + if redraw: item.setX(pos) self._redraw_lines(item) diff --git a/b_asic/scheduler_gui/graphics_graph_item.py b/b_asic/scheduler_gui/graphics_graph_item.py index 053b67e5..07d83fa1 100644 --- a/b_asic/scheduler_gui/graphics_graph_item.py +++ b/b_asic/scheduler_gui/graphics_graph_item.py @@ -79,19 +79,20 @@ class GraphicsGraphItem( slacks = self.schedule.slacks(item.op_id) op_start_time = self.schedule.start_time_of_operation(item.op_id) if not -slacks[0] <= new_start_time - op_start_time <= slacks[1]: + # Cannot move due to dependencies return False - if pos < 0: - return False - if ( - self.schedule.cyclic - and new_start_time > self.schedule.schedule_time + 1 - ): - return False - if ( - not self.schedule.cyclic - and new_start_time + end_time > self.schedule.schedule_time + 1 - ): - return False + if self.schedule.cyclic: + if new_start_time < -1: + # Moving one position before left edge => wrap + return False + if new_start_time > self.schedule.schedule_time + 1: + # Moving one position after schedule_time => wrap + return False + else: + if pos < 0: + return False + if new_start_time + end_time > self.schedule.schedule_time: + return False return True @@ -137,6 +138,10 @@ class GraphicsGraphItem( self.schedule.schedule_time + delta_time ) self._axes.set_width(self._axes.width + delta_time) + # Redraw all lines + for signals in self._signal_dict.values(): + for signal in signals: + signal.update_path() @property def schedule(self) -> Schedule: -- GitLab