Skip to content
Snippets Groups Projects
Commit d3e9250e authored by Oscar Gustafsson's avatar Oscar Gustafsson :bicyclist:
Browse files

Fix reverse wrapping

parent f1d41cb0
No related branches found
No related tags found
No related merge requests found
Pipeline #88025 passed
...@@ -229,8 +229,14 @@ class GraphicsGraphEvent: # PyQt5 ...@@ -229,8 +229,14 @@ class GraphicsGraphEvent: # PyQt5
self.set_item_inactive(item) self.set_item_inactive(item)
self.set_new_starttime(item) self.set_new_starttime(item)
pos = item.x() pos = item.x()
redraw = False
if pos < 0:
pos += self.schedule.schedule_time
redraw = True
if pos > self.schedule.schedule_time: if pos > self.schedule.schedule_time:
pos = pos % self.schedule.schedule_time pos = pos % self.schedule.schedule_time
redraw = True
if redraw:
item.setX(pos) item.setX(pos)
self._redraw_lines(item) self._redraw_lines(item)
......
...@@ -79,19 +79,20 @@ class GraphicsGraphItem( ...@@ -79,19 +79,20 @@ class GraphicsGraphItem(
slacks = self.schedule.slacks(item.op_id) slacks = self.schedule.slacks(item.op_id)
op_start_time = self.schedule.start_time_of_operation(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]: if not -slacks[0] <= new_start_time - op_start_time <= slacks[1]:
# Cannot move due to dependencies
return False return False
if pos < 0: if self.schedule.cyclic:
return False if new_start_time < -1:
if ( # Moving one position before left edge => wrap
self.schedule.cyclic return False
and new_start_time > self.schedule.schedule_time + 1 if new_start_time > self.schedule.schedule_time + 1:
): # Moving one position after schedule_time => wrap
return False return False
if ( else:
not self.schedule.cyclic if pos < 0:
and new_start_time + end_time > self.schedule.schedule_time + 1 return False
): if new_start_time + end_time > self.schedule.schedule_time:
return False return False
return True return True
...@@ -137,6 +138,10 @@ class GraphicsGraphItem( ...@@ -137,6 +138,10 @@ class GraphicsGraphItem(
self.schedule.schedule_time + delta_time self.schedule.schedule_time + delta_time
) )
self._axes.set_width(self._axes.width + 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 @property
def schedule(self) -> Schedule: def schedule(self) -> Schedule:
......
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