Added undo functionalities for all commands
This commit is contained in:
@@ -122,30 +122,36 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
)
|
)
|
||||||
self._state.components[component_id] = component
|
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
|
self._db.save_state(self._key, self._state, undo_redo_attrs) # update db
|
||||||
|
|
||||||
return self.refresh_designer(), self._undo_redo.refresh()
|
return self.refresh_designer(), self._undo_redo.refresh()
|
||||||
|
|
||||||
def move_component(self, component_id, x, y):
|
def move_component(self, component_id, x, y):
|
||||||
if component_id in self._state.components:
|
if component_id in self._state.components:
|
||||||
|
component = self._state.components[component_id]
|
||||||
self._state.selected_component_id = component_id
|
self._state.selected_component_id = component_id
|
||||||
self._state.components[component_id].x = int(x)
|
component.x = int(x)
|
||||||
self._state.components[component_id].y = int(y)
|
component.y = int(y)
|
||||||
self._db.save_state(self._key, self._state, ) # update db
|
|
||||||
|
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)
|
return self.refresh_designer(), self.refresh_properties(True)
|
||||||
|
|
||||||
def delete_component(self, component_id):
|
def delete_component(self, component_id):
|
||||||
# Remove component
|
# Remove component
|
||||||
if component_id in self._state.components:
|
if component_id in self._state.components:
|
||||||
|
component = self._state.components[component_id]
|
||||||
del self._state.components[component_id]
|
del self._state.components[component_id]
|
||||||
|
|
||||||
# Remove related connections
|
# Remove related connections
|
||||||
self._state.connections = [connection for connection in self._state.connections
|
self._state.connections = [connection for connection in self._state.connections
|
||||||
if connection.from_id != component_id and connection.to_id != component_id]
|
if connection.from_id != component_id and connection.to_id != component_id]
|
||||||
# update db
|
|
||||||
self._db.save_state(self._key, self._state)
|
# 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()
|
return self.refresh_designer()
|
||||||
|
|
||||||
@@ -160,7 +166,8 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
self._state.connections.append(connection)
|
self._state.connections.append(connection)
|
||||||
|
|
||||||
# update db
|
# 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()
|
return self.refresh_designer()
|
||||||
|
|
||||||
@@ -170,19 +177,25 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
self._state.connections.remove(connection)
|
self._state.connections.remove(connection)
|
||||||
|
|
||||||
# update db
|
# 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()
|
return self.refresh_designer()
|
||||||
|
|
||||||
def set_designer_height(self, height):
|
def set_designer_height(self, height):
|
||||||
self._state.designer_height = 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
|
return self.__ft__() # refresh the whole component
|
||||||
|
|
||||||
def select_component(self, component_id):
|
def select_component(self, component_id):
|
||||||
if component_id in self._state.components:
|
if component_id in self._state.components:
|
||||||
self._state.selected_component_id = component_id
|
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()
|
return self.refresh_properties()
|
||||||
|
|
||||||
@@ -190,7 +203,9 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
if component_id in self._state.components:
|
if component_id in self._state.components:
|
||||||
component = self._state.components[component_id]
|
component = self._state.components[component_id]
|
||||||
component.properties = details
|
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}")
|
logger.debug(f"Saved properties for component {component_id}: {details}")
|
||||||
|
|
||||||
return self.refresh_properties()
|
return self.refresh_properties()
|
||||||
@@ -206,7 +221,8 @@ class WorkflowDesigner(BaseComponent):
|
|||||||
component = self._state.components[component_id]
|
component = self._state.components[component_id]
|
||||||
component.properties = {"processor_name": processor_name}
|
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()
|
return self.refresh_properties()
|
||||||
|
|
||||||
def play_workflow(self, boundaries: dict):
|
def play_workflow(self, boundaries: dict):
|
||||||
|
|||||||
Reference in New Issue
Block a user