diff options
Diffstat (limited to 'object_collection_manager')
-rw-r--r-- | object_collection_manager/__init__.py | 2 | ||||
-rw-r--r-- | object_collection_manager/cm_init.py | 4 | ||||
-rw-r--r-- | object_collection_manager/operator_utils.py | 6 | ||||
-rw-r--r-- | object_collection_manager/qcd_init.py | 74 |
4 files changed, 59 insertions, 27 deletions
diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py index fd53b291..7467fcbd 100644 --- a/object_collection_manager/__init__.py +++ b/object_collection_manager/__init__.py @@ -6,7 +6,7 @@ bl_info = { "name": "Collection Manager", "description": "Manage collections and their objects", "author": "Ryan Inch", - "version": (2, 24, 1), + "version": (2, 24, 4), "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/cm_init.py b/object_collection_manager/cm_init.py index 38080cb8..679d8d3e 100644 --- a/object_collection_manager/cm_init.py +++ b/object_collection_manager/cm_init.py @@ -144,6 +144,10 @@ def disable_objects_menu_addition(self, context): def register_disable_objects_hotkeys(): + if addon_disable_objects_hotkey_keymaps: + # guard to handle default value updates (mouse hover + backspace) + return + wm = bpy.context.window_manager if wm.keyconfigs.addon: # not present when started with --background km = wm.keyconfigs.addon.keymaps.new(name='Object Mode') diff --git a/object_collection_manager/operator_utils.py b/object_collection_manager/operator_utils.py index 51b4385d..4394cf3a 100644 --- a/object_collection_manager/operator_utils.py +++ b/object_collection_manager/operator_utils.py @@ -604,10 +604,10 @@ def select_collection_objects(is_master_collection, collection_name, replace, ne if replace: bpy.ops.object.select_all(action='DESELECT') - def select_objects(collection, selection_state): - if selection_state == None: - selection_state = get_move_selection().isdisjoint(collection.objects) + if selection_state == None: + selection_state = get_move_selection().isdisjoint(target_collection.objects) + def select_objects(collection, selection_state): for obj in collection.objects: try: obj.select_set(selection_state) diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py index 1273e6e0..6d4ac7e7 100644 --- a/object_collection_manager/qcd_init.py +++ b/object_collection_manager/qcd_init.py @@ -27,6 +27,7 @@ from bpy.app.handlers import persistent addon_qcd_keymaps = [] addon_qcd_view_hotkey_keymaps = [] addon_qcd_view_edit_mode_hotkey_keymaps = [] +qcd_registered = False qcd_classes = ( @@ -76,6 +77,11 @@ def load_pre_handler(dummy): def register_qcd(): + global qcd_registered + if qcd_registered: + # guard to handle default value updates (mouse hover + backspace) + return + for cls in qcd_classes: bpy.utils.register_class(cls) @@ -107,8 +113,14 @@ def register_qcd(): if prefs.enable_qcd_3dview_header_widget: register_qcd_3dview_header_widget() + qcd_registered = True + def register_qcd_view_hotkeys(): + if addon_qcd_view_hotkey_keymaps: + # guard to handle default value updates (mouse hover + backspace) + return + wm = bpy.context.window_manager if wm.keyconfigs.addon: # not present when started with --background # create qcd hotkeys @@ -135,8 +147,8 @@ def register_qcd_view_hotkeys(): ["ZERO", True, "20"], ] - for key in qcd_hotkeys: - for mode in ['Object Mode', 'Pose', 'Weight Paint']: + for mode in ['Object Mode', 'Pose', 'Weight Paint']: + for key in qcd_hotkeys: km = wm.keyconfigs.addon.keymaps.new(name=mode) kmi = km.keymap_items.new('view3d.view_qcd_slot', key[0], 'PRESS', alt=key[1]) kmi.properties.slot = key[2] @@ -149,37 +161,41 @@ def register_qcd_view_hotkeys(): kmi.properties.toggle = True addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.enable_all_qcd_slots', 'PLUS', 'PRESS', shift=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.enable_all_qcd_slots', 'PLUS', 'PRESS', shift=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.isolate_selected_objects_collections', 'EQUAL', 'PRESS') - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.isolate_selected_objects_collections', 'EQUAL', 'PRESS') + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.disable_selected_objects_collections', 'MINUS', 'PRESS') - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.disable_selected_objects_collections', 'MINUS', 'PRESS') + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.disable_all_non_qcd_slots', 'PLUS', 'PRESS', shift=True, alt=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.disable_all_non_qcd_slots', 'PLUS', 'PRESS', shift=True, alt=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.disable_all_collections', 'EQUAL', 'PRESS', alt=True, ctrl=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.disable_all_collections', 'EQUAL', 'PRESS', alt=True, ctrl=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.select_all_qcd_objects', 'PLUS', 'PRESS', shift=True, ctrl=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.select_all_qcd_objects', 'PLUS', 'PRESS', shift=True, ctrl=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) - km = wm.keyconfigs.addon.keymaps.new(name=mode) - kmi = km.keymap_items.new('view3d.discard_qcd_history', 'EQUAL', 'PRESS', alt=True) - addon_qcd_view_hotkey_keymaps.append((km, kmi)) + km = wm.keyconfigs.addon.keymaps.new(name=mode) + kmi = km.keymap_items.new('view3d.discard_qcd_history', 'EQUAL', 'PRESS', alt=True) + addon_qcd_view_hotkey_keymaps.append((km, kmi)) def register_qcd_view_edit_mode_hotkeys(): + if addon_qcd_view_edit_mode_hotkey_keymaps: + # guard to handle default value updates (mouse hover + backspace) + return + wm = bpy.context.window_manager if wm.keyconfigs.addon: # not present when started with --background # create qcd hotkeys @@ -248,12 +264,22 @@ def register_qcd_view_edit_mode_hotkeys(): def register_qcd_3dview_header_widget(): + # unregister first to guard against default value updates (mouse hover + backspace) + # if the widget isn't registered it will just do nothing + unregister_qcd_3dview_header_widget() + + # add the widget to the header, and an update function to the top bar to get view layer changes bpy.types.VIEW3D_HT_header.append(ui.view3d_header_qcd_slots) bpy.types.TOPBAR_HT_upper_bar.append(ui.view_layer_update) def unregister_qcd(): + global qcd_registered + if not qcd_registered: + # guard to handle default value updates (mouse hover + backspace) + return + unregister_qcd_3dview_header_widget() for cls in qcd_classes: @@ -279,6 +305,8 @@ def unregister_qcd(): unregister_qcd_view_edit_mode_hotkeys() + qcd_registered = False + def unregister_qcd_view_hotkeys(): # remove keymaps when qcd view hotkeys are deactivated |