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

Swap operation redraws schedule

parent 4d0c50b5
No related branches found
No related tags found
1 merge request!341Swap operation redraws schedule
Pipeline #96602 passed
...@@ -345,6 +345,19 @@ class Schedule: ...@@ -345,6 +345,19 @@ class Schedule:
self._schedule_time = time self._schedule_time = time
return self return self
def swap_io_of_operation(self, operation_id: GraphID) -> None:
"""
Swap the inputs (and outputs) of operation.
Parameters
----------
operation_id : GraphID
The GraphID of the operation to swap.
"""
self._original_sfg.swap_io_of_operation(operation_id)
self._sfg.swap_io_of_operation(operation_id)
@property @property
def sfg(self) -> SFG: def sfg(self) -> SFG:
"""The SFG of the current schedule.""" """The SFG of the current schedule."""
......
...@@ -245,6 +245,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow): ...@@ -245,6 +245,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow):
if factor > 1: if factor > 1:
self.schedule.increase_time_resolution(factor) self.schedule.increase_time_resolution(factor)
self.open(self.schedule) self.open(self.schedule)
print(f"schedule.increase_time_resolution({factor})")
self.update_statusbar(f"Time resolution increased by a factor {factor}") self.update_statusbar(f"Time resolution increased by a factor {factor}")
else: # Cancelled else: # Cancelled
self.update_statusbar("Cancelled") self.update_statusbar("Cancelled")
...@@ -263,6 +264,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow): ...@@ -263,6 +264,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow):
if int(factor) > 1: if int(factor) > 1:
self.schedule.decrease_time_resolution(int(factor)) self.schedule.decrease_time_resolution(int(factor))
self.open(self.schedule) self.open(self.schedule)
print(f"schedule.decrease_time_resolution({factor})")
self.update_statusbar(f"Time resolution decreased by a factor {factor}") self.update_statusbar(f"Time resolution decreased by a factor {factor}")
else: # Cancelled else: # Cancelled
self.update_statusbar("Cancelled") self.update_statusbar("Cancelled")
...@@ -392,6 +394,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow): ...@@ -392,6 +394,7 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow):
self._graph._signals.schedule_time_changed.disconnect( self._graph._signals.schedule_time_changed.disconnect(
self.info_table_update_schedule self.info_table_update_schedule
) )
self._graph._signals.reopen.disconnect(self._reopen_schedule)
self._graph.removeSceneEventFilters(self._graph.event_items) self._graph.removeSceneEventFilters(self._graph.event_items)
self._scene.removeItem(self._graph) self._scene.removeItem(self._graph)
self.menu_close_schedule.setEnabled(False) self.menu_close_schedule.setEnabled(False)
...@@ -638,12 +641,17 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow): ...@@ -638,12 +641,17 @@ class ScheduleMainWindow(QMainWindow, Ui_MainWindow):
self.info_table_update_schedule self.info_table_update_schedule
) )
self._graph._signals.redraw_all.connect(self._redraw_all) self._graph._signals.redraw_all.connect(self._redraw_all)
self._graph._signals.reopen.connect(self._reopen_schedule)
self.info_table_fill_schedule(self._schedule) self.info_table_fill_schedule(self._schedule)
self.update_statusbar(self.tr("Schedule loaded successfully")) self.update_statusbar(self.tr("Schedule loaded successfully"))
def _redraw_all(self) -> None: def _redraw_all(self) -> None:
self._graph._redraw_all() self._graph._redraw_all()
@Slot()
def _reopen_schedule(self) -> None:
self.open(self._schedule)
def update_statusbar(self, msg: str) -> None: def update_statusbar(self, msg: str) -> None:
""" """
Write *msg* to the statusbar with temporarily policy. Write *msg* to the statusbar with temporarily policy.
......
...@@ -83,6 +83,7 @@ class OperationItem(QGraphicsItemGroup): ...@@ -83,6 +83,7 @@ class OperationItem(QGraphicsItemGroup):
self._end_time = max(latency_offsets.values()) self._end_time = max(latency_offsets.values())
self._port_items = [] self._port_items = []
self._port_number_items = [] self._port_number_items = []
self._parent = parent
self.setFlag(QGraphicsItem.ItemIsMovable) # mouse move events self.setFlag(QGraphicsItem.ItemIsMovable) # mouse move events
self.setFlag(QGraphicsItem.ItemIsSelectable) # mouse move events self.setFlag(QGraphicsItem.ItemIsSelectable) # mouse move events
...@@ -311,4 +312,4 @@ class OperationItem(QGraphicsItemGroup): ...@@ -311,4 +312,4 @@ class OperationItem(QGraphicsItemGroup):
menu.exec_(self.cursor().pos()) menu.exec_(self.cursor().pos())
def _swap_io(self, event=None) -> None: def _swap_io(self, event=None) -> None:
self._operation.swap_io() self._parent._swap_io_of_operation(self._operation.graph_id)
...@@ -37,6 +37,7 @@ class SchedulerEvent: # PyQt5 ...@@ -37,6 +37,7 @@ class SchedulerEvent: # PyQt5
schedule_time_changed = Signal() schedule_time_changed = Signal()
component_moved = Signal(str) component_moved = Signal(str)
redraw_all = Signal() redraw_all = Signal()
reopen = Signal()
_axes: Optional[AxesItem] _axes: Optional[AxesItem]
_current_pos: QPointF _current_pos: QPointF
...@@ -191,6 +192,7 @@ class SchedulerEvent: # PyQt5 ...@@ -191,6 +192,7 @@ class SchedulerEvent: # PyQt5
event.accept() event.accept()
else: # Right-button else: # Right-button
item._open_context_menu() item._open_context_menu()
self._signals.redraw_all.emit()
def operation_mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent) -> None: def operation_mouseReleaseEvent(self, event: QGraphicsSceneMouseEvent) -> None:
"""Change the cursor to OpenHandCursor when releasing an object.""" """Change the cursor to OpenHandCursor when releasing an object."""
......
...@@ -258,6 +258,8 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup): # PySide2 / PyQt5 ...@@ -258,6 +258,8 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup): # PySide2 / PyQt5
if self.schedule is None: if self.schedule is None:
raise ValueError("No schedule installed.") raise ValueError("No schedule installed.")
self.schedule.set_schedule_time(self.schedule.schedule_time + delta_time) self.schedule.set_schedule_time(self.schedule.schedule_time + delta_time)
if delta_time:
print(f"schedule.set_schedule_time({self.schedule.schedule_time})")
self._axes.set_width(self._axes.width + delta_time) self._axes.set_width(self._axes.width + delta_time)
# Redraw all lines # Redraw all lines
self._redraw_all_lines() self._redraw_all_lines()
...@@ -352,5 +354,10 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup): # PySide2 / PyQt5 ...@@ -352,5 +354,10 @@ class SchedulerItem(SchedulerEvent, QGraphicsItemGroup): # PySide2 / PyQt5
self._signal_dict[component].add(gui_signal) self._signal_dict[component].add(gui_signal)
self._signal_dict[destination_component].add(gui_signal) self._signal_dict[destination_component].add(gui_signal)
def _swap_io_of_operation(self, graph_id: str) -> None:
self._schedule.swap_io_of_operation(graph_id)
print(f"schedule.swap_io_of_operation({graph_id!r})")
self._signals.reopen.emit()
pprint(SchedulerItem.__mro__) pprint(SchedulerItem.__mro__)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment