diff --git a/src/components/workflows/components/WorkflowDesigner.py b/src/components/workflows/components/WorkflowDesigner.py index d89de47..c0366d0 100644 --- a/src/components/workflows/components/WorkflowDesigner.py +++ b/src/components/workflows/components/WorkflowDesigner.py @@ -122,30 +122,36 @@ class WorkflowDesigner(BaseComponent): ) self._state.components[component_id] = component - undo_redo_attrs = UndoRedoAttrs(f"Add Component '{component_type}'", on_undo=lambda: self.refresh_state()) + undo_redo_attrs = UndoRedoAttrs(f"Add Component '{component_type}'", on_undo=self.refresh_state) self._db.save_state(self._key, self._state, undo_redo_attrs) # update db return self.refresh_designer(), self._undo_redo.refresh() def move_component(self, component_id, x, y): if component_id in self._state.components: + component = self._state.components[component_id] self._state.selected_component_id = component_id - self._state.components[component_id].x = int(x) - self._state.components[component_id].y = int(y) - self._db.save_state(self._key, self._state, ) # update db + component.x = int(x) + component.y = int(y) + + undo_redo_attrs = UndoRedoAttrs(f"Move Component '{component.title}'", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) # update db return self.refresh_designer(), self.refresh_properties(True) def delete_component(self, component_id): # Remove component if component_id in self._state.components: + component = self._state.components[component_id] del self._state.components[component_id] - # Remove related connections - self._state.connections = [connection for connection in self._state.connections - if connection.from_id != component_id and connection.to_id != component_id] - # update db - self._db.save_state(self._key, self._state) + # Remove related connections + self._state.connections = [connection for connection in self._state.connections + if connection.from_id != component_id and connection.to_id != component_id] + + # update db + undo_redo_attrs = UndoRedoAttrs(f"Remove Component '{component.title}'", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) return self.refresh_designer() @@ -160,7 +166,8 @@ class WorkflowDesigner(BaseComponent): self._state.connections.append(connection) # update db - self._db.save_state(self._key, self._state) + undo_redo_attrs = UndoRedoAttrs(f"Add Connection", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) return self.refresh_designer() @@ -170,19 +177,25 @@ class WorkflowDesigner(BaseComponent): self._state.connections.remove(connection) # update db - self._db.save_state(self._key, self._state) + undo_redo_attrs = UndoRedoAttrs(f"Delete Connection", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) return self.refresh_designer() def set_designer_height(self, height): self._state.designer_height = height - self._db.save_state(self._key, self._state) + + undo_redo_attrs = UndoRedoAttrs(f"Resize Designer", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) return self.__ft__() # refresh the whole component def select_component(self, component_id): if component_id in self._state.components: self._state.selected_component_id = component_id - self._db.save_state(self._key, self._state) + + component = self._state.components[component_id] + undo_redo_attrs = UndoRedoAttrs(f"Select Component {component.title}", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) return self.refresh_properties() @@ -190,7 +203,9 @@ class WorkflowDesigner(BaseComponent): if component_id in self._state.components: component = self._state.components[component_id] component.properties = details - self._db.save_state(self._key, self._state) + + undo_redo_attrs = UndoRedoAttrs(f"Set properties for {component.title}", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) logger.debug(f"Saved properties for component {component_id}: {details}") return self.refresh_properties() @@ -205,8 +220,9 @@ class WorkflowDesigner(BaseComponent): if component_id in self._state.components: component = self._state.components[component_id] component.properties = {"processor_name": processor_name} - - self._db.save_state(self._key, self._state) + + undo_redo_attrs = UndoRedoAttrs(f"Set Processor for {component.title}", on_undo=self.refresh_state) + self._db.save_state(self._key, self._state, undo_redo_attrs) return self.refresh_properties() def play_workflow(self, boundaries: dict):