[Bf-extensions-cvs] [e61a7e8b] master: Collection Manager: Add prefs to disable QCD. Task: T69577

Ryan Inch noreply at git.blender.org
Wed Mar 18 05:49:12 CET 2020


Commit: e61a7e8bfe226aa1db7b5126f50cd9e7ba295239
Author: Ryan Inch
Date:   Wed Mar 18 00:45:26 2020 -0400
Branches: master
https://developer.blender.org/rBAe61a7e8bfe226aa1db7b5126f50cd9e7ba295239

Collection Manager: Add prefs to disable QCD. Task: T69577

Adds two checkboxes to preferences.  One to disable the whole QCD system,
the other is a sub-checkbox to disable the QCD view (number) hotkeys.

===================================================================

M	object_collection_manager/__init__.py
M	object_collection_manager/preferences.py
A	object_collection_manager/qcd_init.py
M	object_collection_manager/ui.py

===================================================================

diff --git a/object_collection_manager/__init__.py b/object_collection_manager/__init__.py
index a55d60fa..b7e44f88 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,3,2),
+    "version": (2,4,1),
     "blender": (2, 80, 0),
     "location": "View3D - Object Mode (Shortcut - M)",
     "warning": '',  # used for warning icon and text in addons panel
@@ -36,23 +36,22 @@ if "bpy" in locals():
 
     importlib.reload(internals)
     importlib.reload(operators)
-    importlib.reload(preferences)
     importlib.reload(qcd_move_widget)
     importlib.reload(qcd_operators)
     importlib.reload(ui)
+    importlib.reload(qcd_init)
+    importlib.reload(preferences)
 
 else:
     from . import internals
     from . import operators
-    from . import preferences
     from . import qcd_move_widget
     from . import qcd_operators
     from . import ui
+    from . import qcd_init
+    from . import preferences
 
-import os
 import bpy
-import bpy.utils.previews
-from bpy.app.handlers import persistent
 from bpy.types import PropertyGroup
 from bpy.props import (
     CollectionProperty,
@@ -103,134 +102,42 @@ classes = (
     operators.CMSetCollectionOperator,
     operators.CMPhantomModeOperator,
     preferences.CMPreferences,
-    qcd_move_widget.QCDMoveWidget,
-    qcd_operators.MoveToQCDSlot,
-    qcd_operators.ViewQCDSlot,
-    qcd_operators.ViewMoveQCDSlot,
-    qcd_operators.RenumerateQCDSlots,
     ui.CM_UL_items,
     ui.CollectionManager,
     ui.CMRestrictionTogglesPanel,
     CollectionManagerProperties,
     )
 
- at persistent
-def depsgraph_update_post_handler(dummy):
-    if qcd_operators.move_triggered:
-        qcd_operators.move_triggered = False
-        return
-
-    qcd_operators.move_selection.clear()
-    qcd_operators.move_active = None
-    qcd_operators.get_move_selection()
-    qcd_operators.get_move_active()
-
- at persistent
-def save_internal_data(dummy):
-    cm = bpy.context.scene.collection_manager
 
-    cm.qcd_slots_blend_data = internals.qcd_slots.get_data_for_blend()
-
- at persistent
-def load_internal_data(dummy):
-    cm = bpy.context.scene.collection_manager
-    data = cm.qcd_slots_blend_data
-
-    if not data:
-        return
-
-    internals.qcd_slots.load_blend_data(data)
 
 def register():
     for cls in classes:
         bpy.utils.register_class(cls)
 
-
-    pcoll = bpy.utils.previews.new()
-    icons_dir = os.path.join(os.path.dirname(__file__), "icons")
-    pcoll.load("active_icon_base", os.path.join(icons_dir, "minus.png"), 'IMAGE', True)
-    pcoll.load("active_icon_text", os.path.join(icons_dir, "minus.png"), 'IMAGE', True)
-    pcoll.load("active_icon_text_sel", os.path.join(icons_dir, "minus.png"), 'IMAGE', True)
-    ui.preview_collections["icons"] = pcoll
-
-
     bpy.types.Scene.collection_manager = PointerProperty(type=CollectionManagerProperties)
 
-    bpy.types.VIEW3D_HT_header.append(ui.view3d_header_qcd_slots)
-
     # create the global menu hotkey
     wm = bpy.context.window_manager
     km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
     kmi = km.keymap_items.new('view3d.collection_manager', 'M', 'PRESS')
     addon_keymaps.append((km, kmi))
 
-    # create qcd hotkeys
-    qcd_hotkeys = [
-        ["ONE", False, "1"],
-        ["TWO", False, "2"],
-        ["THREE", False, "3"],
-        ["FOUR", False, "4"],
-        ["FIVE", False, "5"],
-        ["SIX", False, "6"],
-        ["SEVEN", False, "7"],
-        ["EIGHT", False, "8"],
-        ["NINE", False, "9"],
-        ["ZERO", False, "10"],
-        ["ONE", True, "11"],
-        ["TWO", True, "12"],
-        ["THREE", True, "13"],
-        ["FOUR", True, "14"],
-        ["FIVE", True, "15"],
-        ["SIX", True, "16"],
-        ["SEVEN", True, "17"],
-        ["EIGHT", True, "18"],
-        ["NINE", True, "19"],
-        ["ZERO", True, "20"],
-    ]
-
-    for key in qcd_hotkeys:
-        km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
-        kmi = km.keymap_items.new('view3d.view_qcd_slot', key[0], 'PRESS', alt=key[1])
-        kmi.properties.slot = key[2]
-        kmi.properties.toggle = False
-        addon_keymaps.append((km, kmi))
-
-        km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
-        kmi = km.keymap_items.new('view3d.view_qcd_slot', key[0], 'PRESS',shift=True,  alt=key[1])
-        kmi.properties.slot = key[2]
-        kmi.properties.toggle = True
-        addon_keymaps.append((km, kmi))
-
-    km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
-    kmi = km.keymap_items.new('view3d.qcd_move_widget', 'V', 'PRESS')
-    addon_keymaps.append((km, kmi))
-
-    bpy.app.handlers.depsgraph_update_post.append(depsgraph_update_post_handler)
-    bpy.app.handlers.save_pre.append(save_internal_data)
-    bpy.app.handlers.load_post.append(load_internal_data)
+    if bpy.context.preferences.addons[__package__].preferences.enable_qcd:
+        qcd_init.register_qcd()
 
 def unregister():
-    bpy.app.handlers.depsgraph_update_post.remove(depsgraph_update_post_handler)
-    bpy.app.handlers.save_pre.remove(save_internal_data)
-    bpy.app.handlers.load_post.remove(load_internal_data)
-
     for cls in classes:
         bpy.utils.unregister_class(cls)
 
-    for pcoll in ui.preview_collections.values():
-        bpy.utils.previews.remove(pcoll)
-    ui.preview_collections.clear()
-    ui.last_icon_theme_text = None
-    ui.last_icon_theme_text_sel = None
-
     del bpy.types.Scene.collection_manager
 
-    bpy.types.VIEW3D_HT_header.remove(ui.view3d_header_qcd_slots)
-
     # remove keymaps when add-on is deactivated
     for km, kmi in addon_keymaps:
         km.keymap_items.remove(kmi)
     addon_keymaps.clear()
 
+    qcd_init.unregister_qcd()
+
+
 if __name__ == "__main__":
     register()
diff --git a/object_collection_manager/preferences.py b/object_collection_manager/preferences.py
index 154ee3ee..d40b4303 100644
--- a/object_collection_manager/preferences.py
+++ b/object_collection_manager/preferences.py
@@ -26,6 +26,24 @@ from bpy.props import (
     FloatVectorProperty,
     )
 
+from . import qcd_init
+
+def update_qcd_status(self, context):
+    if self.enable_qcd:
+        qcd_init.register_qcd()
+
+        if self.enable_qcd_view_hotkeys:
+            qcd_init.register_qcd_view_hotkeys()
+
+    else:
+        qcd_init.unregister_qcd()
+
+def update_qcd_view_hotkeys_status(self, context):
+    if self.enable_qcd_view_hotkeys:
+        qcd_init.register_qcd_view_hotkeys()
+    else:
+        qcd_init.unregister_qcd_view_hotkeys()
+
 def get_tool_text(self):
     if self.tool_text_override:
         return self["tool_text_color"]
@@ -161,6 +179,22 @@ def set_tooltip_outline(self, values):
 class CMPreferences(AddonPreferences):
     bl_idname = __package__
 
+    # ENABLE QCD BOOLS
+    enable_qcd: BoolProperty(
+        name="QCD",
+        description="Enable/Disable QCD System",
+        default=True,
+        update=update_qcd_status,
+        )
+
+    enable_qcd_view_hotkeys: BoolProperty(
+        name="QCD Hotkeys",
+        description="Enable/Disable the view (number) hotkeys for QCD",
+        default=True,
+        update=update_qcd_view_hotkeys_status,
+        )
+
+
     # OVERRIDE BOOLS
     tool_text_override: BoolProperty(
         name="Text",
@@ -376,6 +410,13 @@ class CMPreferences(AddonPreferences):
         layout = self.layout
         box = layout.box()
 
+        box.row().prop(self, "enable_qcd")
+
+        if not self.enable_qcd:
+            return
+
+        box.row().prop(self, "enable_qcd_view_hotkeys")
+
         box.row().label(text="QCD Move Widget")
 
         tool_box = box.box()
diff --git a/object_collection_manager/qcd_init.py b/object_collection_manager/qcd_init.py
new file mode 100644
index 00000000..4857719a
--- /dev/null
+++ b/object_collection_manager/qcd_init.py
@@ -0,0 +1,140 @@
+import os
+import bpy
+import bpy.utils.previews
+from bpy.app.handlers import persistent
+
+from . import preferences
+from . import qcd_move_widget
+from . import qcd_operators
+from . import ui
+
+addon_qcd_keymaps = []
+addon_qcd_view_hotkey_keymaps = []
+
+qcd_classes = (
+    qcd_move_widget.QCDMoveWidget,
+    qcd_operators.MoveToQCDSlot,
+    qcd_operators.ViewQCDSlot,
+    qcd_operators.ViewMoveQCDSlot,
+    qcd_operators.RenumerateQCDSlots,
+    )
+
+ at persistent
+def depsgraph_update_post_handler(dummy):
+    if qcd_operators.move_triggered:
+        qcd_operators.move_triggered = False
+        return
+
+    qcd_operators.move_selection.clear()
+    qcd_operators.move_active = None
+    qcd_operators.get_move_selection()
+    qcd_operators.get_move_active()
+
+ at persistent
+def save_internal_data(dummy):
+    cm = bpy.context.scene.collection_manager
+
+    cm.qcd_slots_blend_data = internals.qcd_slots.get_data_for_blend()
+
+ at persistent
+def load_internal_data(dummy):
+    cm = bpy.context.scene.collection_manager
+    data = cm.qcd_slots_blend_data
+
+    if not data:
+        return
+
+    internals.qcd_slots.load_blend_data(data)
+
+def register_qcd():
+    for cls in qcd_classes:
+        bpy.utils.register_class(cls)
+
+    pcoll = bpy.utils.previews.new()
+    icons_dir = os.path.join(os.path.dirname(__file__), "icons")
+    pcoll.load("active_icon_base", os.path.join(icons_dir, "minus.png"), 'IMAGE', True)
+    pcoll.load("active_icon_text", os.path.join(icons_dir, "minus.png"), 'IMAGE', True)
+    pcoll.load("active_icon_text_sel", os.path.join(icons_dir, "minus.png"), 'IMAGE', True)
+    ui.preview_collections["icons"] = pcoll
+
+    wm = bpy.context.window_manager
+    km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
+    kmi = km.keymap_items.new('view3d.qcd_move_widget', 'V', 'PRESS')
+    addon_qcd_keymaps.append((km, kmi))
+
+    bpy.app.handlers.depsgraph_update_post.append(depsgraph_update_post_handler)
+    bpy.app.handlers.save_pre.append(save_internal_data)
+    bpy.app.handlers.load_post.append(load_internal_data)
+
+    if bpy.context.preferences.addons[__package__].preferences.enable_qcd_view_hotkeys:
+        regis

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list