Collection Manager: Clear RTO history on destructive actions. Task: T69577

This commit is contained in:
Ryan Inch 2020-04-15 04:02:49 -04:00
parent 8139c91615
commit cc1a2f5af8
3 changed files with 39 additions and 20 deletions

View File

@ -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

View File

@ -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()

View File

@ -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")