diff options
Diffstat (limited to 'object_collection_manager/operators.py')
-rw-r--r-- | object_collection_manager/operators.py | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/object_collection_manager/operators.py b/object_collection_manager/operators.py index 45dc4df5..b38e2fe6 100644 --- a/object_collection_manager/operators.py +++ b/object_collection_manager/operators.py @@ -38,6 +38,8 @@ from . import internals # For FUNCTIONS from .internals import ( update_property_group, + generate_state, + check_state, get_modifiers, get_move_selection, get_move_active, @@ -1499,3 +1501,48 @@ class CMRestoreDisabledObjectsOperator(Operator): obj.select_set(True) return {'FINISHED'} + + +class CMUndoWrapper(Operator): + bl_label = "Undo" + bl_description = "Undo previous action" + bl_idname = "view3d.undo_wrapper" + + @classmethod + def poll(self, context): + return bpy.ops.ed.undo.poll() + + def execute(self, context): + internals.collection_state.clear() + internals.collection_state.update(generate_state()) + bpy.ops.ed.undo() + update_property_group(context) + + check_state(context, cm_popup=True) + + # clear buffers + internals.copy_buffer["RTO"] = "" + internals.copy_buffer["values"].clear() + + internals.swap_buffer["A"]["RTO"] = "" + internals.swap_buffer["A"]["values"].clear() + internals.swap_buffer["B"]["RTO"] = "" + internals.swap_buffer["B"]["values"].clear() + + return {'FINISHED'} + + +class CMRedoWrapper(Operator): + bl_label = "Redo" + bl_description = "Redo previous action" + bl_idname = "view3d.redo_wrapper" + + @classmethod + def poll(self, context): + return bpy.ops.ed.redo.poll() + + def execute(self, context): + bpy.ops.ed.redo() + update_property_group(context) + + return {'FINISHED'} |