diff --git a/b_asic/scheduler_gui/graphics_graph_event.py b/b_asic/scheduler_gui/graphics_graph_event.py index 7af6938a544386ef2083a69d634758a028d56b5f..8f06d4b0301896122cb12080f93944497a0830ae 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 053b67e533a854ba6bcdaf8b3d1e95b74089c672..07d83fa1ea8c33e7264407ae04504492b9a6c87c 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: