From cc1a2f5af8681158905be040099ea14bb814b331 Mon Sep 17 00:00:00 2001 From: Ryan Inch <mythologylover75@gmail.com> Date: Wed, 15 Apr 2020 04:02:49 -0400 Subject: [PATCH] Collection Manager: Clear RTO history on destructive actions. Task: T69577 --- object_collection_manager/__init__.py | 2 +- object_collection_manager/operator_utils.py | 27 ++++++++++++++++--- object_collection_manager/operators.py | 30 ++++++++++----------- 3 files changed, 39 insertions(+), 20 deletions(-) diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py index 4a2c9bf60..ba6b5b190 100644 --- a/object_collection_manager/__init__.py +++ b/object_collection_manager/__init__.py @@ -22,7 +22,7 @@ bl_info = { "name": "Collection Manager", "description": "Manage collections and their objects", "author": "Ryan Inch", - "version": (2,7,7), + "version": (2,7,8), "blender": (2, 80, 0), "location": "View3D - Object Mode (Shortcut - M)", "warning": '', # used for warning icon and text in addons panel diff --git a/object_collection_manager/operator_utils.py b/object_collection_manager/operator_utils.py index 02644954c..f99d870b5 100644 --- a/object_collection_manager/operator_utils.py +++ b/object_collection_manager/operator_utils.py @@ -161,8 +161,9 @@ def isolate_rto(cls, self, view_layer, rto, *, children=False): def toggle_children(self, view_layer, rto): laycol_ptr = layer_collections[self.name]["ptr"] - # reset rto history + # clear rto history del rto_history[rto][view_layer] + rto_history[rto+"_all"].pop(view_layer, None) # toggle rto state state = not get_rto(laycol_ptr, rto) @@ -198,10 +199,11 @@ def activate_all_rtos(view_layer, rto): for x, item in enumerate(layer_collections.values()): set_rto(item["ptr"], rto, history[x]) + # clear rto history del rto_history[rto+"_all"][view_layer] -def invert_rtos(rto): +def invert_rtos(view_layer, rto): if rto == "exclude": orig_values = [] @@ -215,8 +217,11 @@ def invert_rtos(rto): for item in layer_collections.values(): set_rto(item["ptr"], rto, not get_rto(item["ptr"], rto)) + # clear rto history + rto_history[rto].pop(view_layer, None) -def copy_rtos(rto): + +def copy_rtos(view_layer, rto): if not copy_buffer["RTO"]: # copy copy_buffer["RTO"] = rto @@ -228,12 +233,16 @@ def copy_rtos(rto): for x, laycol in enumerate(layer_collections.values()): set_rto(laycol["ptr"], rto, copy_buffer["values"][x]) + # clear rto history + rto_history[rto].pop(view_layer, None) + del rto_history[rto+"_all"][view_layer] + # clear copy buffer copy_buffer["RTO"] = "" copy_buffer["values"].clear() -def swap_rtos(rto): +def swap_rtos(view_layer, rto): if not swap_buffer["A"]["values"]: # get A swap_buffer["A"]["RTO"] = rto @@ -251,6 +260,16 @@ def swap_rtos(rto): set_rto(laycol["ptr"], swap_buffer["A"]["RTO"], swap_buffer["B"]["values"][x]) set_rto(laycol["ptr"], swap_buffer["B"]["RTO"], swap_buffer["A"]["values"][x]) + + # clear rto history + swap_a = swap_buffer["A"]["RTO"] + swap_b = swap_buffer["B"]["RTO"] + + rto_history[swap_a].pop(view_layer, None) + rto_history[swap_a+"_all"].pop(view_layer, None) + rto_history[swap_b].pop(view_layer, None) + rto_history[swap_b+"_all"].pop(view_layer, None) + # clear swap buffer swap_buffer["A"]["RTO"] = "" swap_buffer["A"]["values"].clear() diff --git a/object_collection_manager/operators.py b/object_collection_manager/operators.py index efb9e40bb..11d751712 100644 --- a/object_collection_manager/operators.py +++ b/object_collection_manager/operators.py @@ -417,13 +417,13 @@ class CMUnExcludeAllOperator(Operator): clear_swap("exclude") elif modifiers == {"ctrl"}: - copy_rtos("exclude") + copy_rtos(view_layer, "exclude") elif modifiers == {"ctrl", "alt"}: - swap_rtos("exclude") + swap_rtos(view_layer, "exclude") elif modifiers == {"shift"}: - invert_rtos("exclude") + invert_rtos(view_layer, "exclude") else: activate_all_rtos(view_layer, "exclude") @@ -519,13 +519,13 @@ class CMUnRestrictSelectAllOperator(Operator): clear_swap("select") elif modifiers == {"ctrl"}: - copy_rtos("select") + copy_rtos(view_layer, "select") elif modifiers == {"ctrl", "alt"}: - swap_rtos("select") + swap_rtos(view_layer, "select") elif modifiers == {"shift"}: - invert_rtos("select") + invert_rtos(view_layer, "select") else: activate_all_rtos(view_layer, "select") @@ -621,13 +621,13 @@ class CMUnHideAllOperator(Operator): clear_swap("hide") elif modifiers == {"ctrl"}: - copy_rtos("hide") + copy_rtos(view_layer, "hide") elif modifiers == {"ctrl", "alt"}: - swap_rtos("hide") + swap_rtos(view_layer, "hide") elif modifiers == {"shift"}: - invert_rtos("hide") + invert_rtos(view_layer, "hide") else: activate_all_rtos(view_layer, "hide") @@ -723,13 +723,13 @@ class CMUnDisableViewportAllOperator(Operator): clear_swap("disable") elif modifiers == {"ctrl"}: - copy_rtos("disable") + copy_rtos(view_layer, "disable") elif modifiers == {"ctrl", "alt"}: - swap_rtos("disable") + swap_rtos(view_layer, "disable") elif modifiers == {"shift"}: - invert_rtos("disable") + invert_rtos(view_layer, "disable") else: activate_all_rtos(view_layer, "disable") @@ -826,13 +826,13 @@ class CMUnDisableRenderAllOperator(Operator): clear_swap("render") elif modifiers == {"ctrl"}: - copy_rtos("render") + copy_rtos(view_layer, "render") elif modifiers == {"ctrl", "alt"}: - swap_rtos("render") + swap_rtos(view_layer, "render") elif modifiers == {"shift"}: - invert_rtos("render") + invert_rtos(view_layer, "render") else: activate_all_rtos(view_layer, "render") -- GitLab