diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py index 54a0bba2f6a52bd289cbe53a0582180e816a88ec..455670fc33d201313bb6f87db3702cea35b9ec70 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,5,2), + "version": (2,5,3), "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/internals.py b/object_collection_manager/internals.py index 594756c952a7c3a3e8c5893ff5b64e0f60fc9922..6b9621198f4940ee4c25de465baef0a60978c559 100644 --- a/object_collection_manager/internals.py +++ b/object_collection_manager/internals.py @@ -408,6 +408,13 @@ def get_move_active(): return bpy.data.objects[move_active] if move_active else None +def update_qcd_header(): + cm = bpy.context.scene.collection_manager + cm.update_header.clear() + new_update_header = cm.update_header.add() + new_update_header.name = "updated" + + class CMSendReport(Operator): bl_label = "Send Report" bl_idname = "view3d.cm_send_report" diff --git a/object_collection_manager/operators.py b/object_collection_manager/operators.py index 1094e57889c633fb2e54910d69bd5418b2191926..1aca6c3cb43c05c7c819421aea461b74d1aeb0cc 100644 --- a/object_collection_manager/operators.py +++ b/object_collection_manager/operators.py @@ -42,6 +42,7 @@ from .internals import ( get_modifiers, get_move_selection, get_move_active, + update_qcd_header, send_report, ) @@ -255,10 +256,7 @@ class CMSetCollectionOperator(Operator): pass # update qcd header UI - cm = bpy.context.scene.collection_manager - cm.update_header.clear() - new_update_header = cm.update_header.add() - new_update_header.name = "updated" + update_qcd_header() return {'FINISHED'} diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py index 0bef6e4461bc191229205251736be04eb43270d6..69bb46210e0c759e2723776f7ec62cf1375d18ef 100644 --- a/object_collection_manager/qcd_init.py +++ b/object_collection_manager/qcd_init.py @@ -59,6 +59,7 @@ def register_qcd(): register_qcd_view_hotkeys() bpy.types.VIEW3D_HT_header.append(ui.view3d_header_qcd_slots) + bpy.types.TOPBAR_HT_upper_bar.append(ui.view_layer_update) def register_qcd_view_hotkeys(): wm = bpy.context.window_manager @@ -101,6 +102,7 @@ def register_qcd_view_hotkeys(): def unregister_qcd(): bpy.types.VIEW3D_HT_header.remove(ui.view3d_header_qcd_slots) + bpy.types.TOPBAR_HT_upper_bar.remove(ui.view_layer_update) for cls in qcd_classes: bpy.utils.unregister_class(cls) diff --git a/object_collection_manager/qcd_operators.py b/object_collection_manager/qcd_operators.py index 679d35be22ee3f39f14c8f148dfc0ef8af099fc5..c39a9cf3214782b635279aecb45caad2119cad03 100644 --- a/object_collection_manager/qcd_operators.py +++ b/object_collection_manager/qcd_operators.py @@ -38,7 +38,8 @@ from .internals import ( update_property_group, get_modifiers, get_move_selection, - get_move_active + get_move_active, + update_qcd_header, ) from .operators import rto_history @@ -115,10 +116,7 @@ class MoveToQCDSlot(Operator): pass # update header UI - cm = bpy.context.scene.collection_manager - cm.update_header.clear() - new_update_header = cm.update_header.add() - new_update_header.name = "updated" + update_qcd_header() return {'FINISHED'} @@ -240,10 +238,7 @@ class ViewQCDSlot(Operator): context.view_layer.active_layer_collection = qcd_laycol # update header UI - cm = bpy.context.scene.collection_manager - cm.update_header.clear() - new_update_header = cm.update_header.add() - new_update_header.name = "updated" + update_qcd_header() view_layer = context.view_layer.name if view_layer in rto_history["exclude"]: diff --git a/object_collection_manager/ui.py b/object_collection_manager/ui.py index 0e2739c2c3600b72540f302ccc23792c08809ec5..9de8f3e44facecacad725d25a4f46087834263e0 100644 --- a/object_collection_manager/ui.py +++ b/object_collection_manager/ui.py @@ -18,6 +18,8 @@ # Copyright 2011, Ryan Inch +import bpy + from bpy.types import ( Operator, Panel, @@ -37,7 +39,8 @@ from .internals import ( update_property_group, generate_state, get_move_selection, - get_move_active + get_move_active, + update_qcd_header, ) from .operators import ( @@ -66,13 +69,17 @@ class CollectionManager(Operator): self.window_open = True def draw(self, context): + cls = CollectionManager layout = self.layout cm = context.scene.collection_manager view_layer = context.view_layer - if view_layer.name != self.last_view_layer: + if view_layer.name != cls.last_view_layer: + if context.preferences.addons[__package__].preferences.enable_qcd: + bpy.app.timers.register(update_qcd_header) + update_collection_tree(context) - self.last_view_layer = view_layer.name + cls.last_view_layer = view_layer.name title_row = layout.split(factor=0.5) main = title_row.row() @@ -646,6 +653,12 @@ def view3d_header_qcd_slots(self, context): idx += 1 +def view_layer_update(self, context): + if context.view_layer.name != CollectionManager.last_view_layer: + bpy.app.timers.register(update_qcd_header) + CollectionManager.last_view_layer = context.view_layer.name + + def get_active_icon(context, qcd_laycol): global last_icon_theme_text global last_icon_theme_text_sel