diff options
author | Ryan Inch <mythologylover75@gmail.com> | 2020-04-15 11:02:49 +0300 |
---|---|---|
committer | Ryan Inch <mythologylover75@gmail.com> | 2020-04-15 11:02:49 +0300 |
commit | cc1a2f5af8681158905be040099ea14bb814b331 (patch) | |
tree | d524dfaca20c916bd279ceb5fd6bbb6fe596d992 | |
parent | 8139c91615608ce627335e3efae79d1074ba7191 (diff) |
Collection Manager: Clear RTO history on destructive actions. Task: T69577
-rw-r--r-- | object_collection_manager/__init__.py | 2 | ||||
-rw-r--r-- | object_collection_manager/operator_utils.py | 27 | ||||
-rw-r--r-- | 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 4a2c9bf6..ba6b5b19 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 02644954..f99d870b 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 efb9e40b..11d75171 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") |