Collection Manager: Add file. Task: T69577.
Add missing file that should have been included with the previous commit.
This commit is contained in:
parent
7cc2e4b14f
commit
7b37ca9904
|
@ -0,0 +1,223 @@
|
|||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
# Copyright 2011, Ryan Inch
|
||||
|
||||
if "bpy" in locals():
|
||||
import importlib
|
||||
|
||||
importlib.reload(internals)
|
||||
importlib.reload(operator_utils)
|
||||
importlib.reload(operators)
|
||||
importlib.reload(ui)
|
||||
importlib.reload(preferences)
|
||||
|
||||
else:
|
||||
from . import internals
|
||||
from . import operator_utils
|
||||
from . import operators
|
||||
from . import ui
|
||||
from . import preferences
|
||||
|
||||
import bpy
|
||||
from bpy.app.handlers import persistent
|
||||
from bpy.types import PropertyGroup
|
||||
from bpy.props import (
|
||||
CollectionProperty,
|
||||
EnumProperty,
|
||||
IntProperty,
|
||||
BoolProperty,
|
||||
StringProperty,
|
||||
PointerProperty,
|
||||
)
|
||||
|
||||
|
||||
class CollectionManagerProperties(PropertyGroup):
|
||||
cm_list_collection: CollectionProperty(type=internals.CMListCollection)
|
||||
cm_list_index: IntProperty()
|
||||
|
||||
show_exclude: BoolProperty(default=True, name="[EC] Exclude from View Layer")
|
||||
show_selectable: BoolProperty(default=True, name="[SS] Disable Selection")
|
||||
show_hide_viewport: BoolProperty(default=True, name="[VV] Hide in Viewport")
|
||||
show_disable_viewport: BoolProperty(default=False, name="[DV] Disable in Viewports")
|
||||
show_render: BoolProperty(default=False, name="[RR] Disable in Renders")
|
||||
show_holdout: BoolProperty(default=False, name="[HH] Holdout")
|
||||
show_indirect_only: BoolProperty(default=False, name="[IO] Indirect Only")
|
||||
|
||||
align_local_ops: BoolProperty(default=False, name="Align Local Options",
|
||||
description="Align local options in a column to the right")
|
||||
|
||||
in_phantom_mode: BoolProperty(default=False)
|
||||
|
||||
update_header: CollectionProperty(type=internals.CMListCollection)
|
||||
|
||||
ui_separator: StringProperty(name="", default="")
|
||||
|
||||
qcd_slots_blend_data: StringProperty()
|
||||
|
||||
|
||||
addon_keymaps = []
|
||||
addon_disable_objects_hotkey_keymaps = []
|
||||
|
||||
classes = (
|
||||
internals.CMListCollection,
|
||||
internals.CMSendReport,
|
||||
operators.SetActiveCollection,
|
||||
operators.ExpandAllOperator,
|
||||
operators.ExpandSublevelOperator,
|
||||
operators.CMExcludeOperator,
|
||||
operators.CMUnExcludeAllOperator,
|
||||
operators.CMRestrictSelectOperator,
|
||||
operators.CMUnRestrictSelectAllOperator,
|
||||
operators.CMHideOperator,
|
||||
operators.CMUnHideAllOperator,
|
||||
operators.CMDisableViewportOperator,
|
||||
operators.CMUnDisableViewportAllOperator,
|
||||
operators.CMDisableRenderOperator,
|
||||
operators.CMUnDisableRenderAllOperator,
|
||||
operators.CMHoldoutOperator,
|
||||
operators.CMUnHoldoutAllOperator,
|
||||
operators.CMIndirectOnlyOperator,
|
||||
operators.CMUnIndirectOnlyAllOperator,
|
||||
operators.CMNewCollectionOperator,
|
||||
operators.CMRemoveCollectionOperator,
|
||||
operators.CMRemoveEmptyCollectionsOperator,
|
||||
operators.CMSelectCollectionObjectsOperator,
|
||||
operators.CMSetCollectionOperator,
|
||||
operators.CMPhantomModeOperator,
|
||||
operators.CMApplyPhantomModeOperator,
|
||||
operators.CMDisableObjectsOperator,
|
||||
operators.CMDisableUnSelectedObjectsOperator,
|
||||
operators.CMRestoreDisabledObjectsOperator,
|
||||
preferences.CMPreferences,
|
||||
ui.CM_UL_items,
|
||||
ui.CollectionManager,
|
||||
ui.CMDisplayOptionsPanel,
|
||||
ui.SpecialsMenu,
|
||||
CollectionManagerProperties,
|
||||
)
|
||||
|
||||
|
||||
@persistent
|
||||
def depsgraph_update_post_handler(dummy):
|
||||
if internals.move_triggered:
|
||||
internals.move_triggered = False
|
||||
return
|
||||
|
||||
internals.move_selection.clear()
|
||||
internals.move_active = None
|
||||
|
||||
@persistent
|
||||
def undo_redo_post_handler(dummy):
|
||||
internals.move_selection.clear()
|
||||
internals.move_active = None
|
||||
|
||||
|
||||
def menu_addition(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator('view3d.collection_manager')
|
||||
|
||||
if bpy.context.preferences.addons[__package__].preferences.enable_qcd:
|
||||
layout.operator('view3d.qcd_move_widget')
|
||||
|
||||
layout.separator()
|
||||
|
||||
def disable_objects_menu_addition(self, context):
|
||||
preferences = bpy.context.preferences.addons[__package__].preferences
|
||||
if preferences.enable_disable_objects_override:
|
||||
layout = self.layout
|
||||
layout.separator()
|
||||
layout.operator('view3d.disable_selected_objects')
|
||||
layout.operator('view3d.disable_unselected_objects')
|
||||
layout.operator('view3d.restore_disabled_objects')
|
||||
|
||||
|
||||
def register_disable_objects_hotkeys():
|
||||
wm = bpy.context.window_manager
|
||||
if wm.keyconfigs.addon: # not present when started with --background
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
|
||||
kmi = km.keymap_items.new('view3d.disable_selected_objects', 'H', 'PRESS')
|
||||
addon_disable_objects_hotkey_keymaps.append((km, kmi))
|
||||
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
|
||||
kmi = km.keymap_items.new('view3d.disable_unselected_objects', 'H', 'PRESS', shift=True)
|
||||
addon_disable_objects_hotkey_keymaps.append((km, kmi))
|
||||
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
|
||||
kmi = km.keymap_items.new('view3d.restore_disabled_objects', 'H', 'PRESS', alt=True)
|
||||
addon_disable_objects_hotkey_keymaps.append((km, kmi))
|
||||
|
||||
def unregister_disable_objects_hotkeys():
|
||||
# remove keymaps when disable objects hotkeys are deactivated
|
||||
for km, kmi in addon_disable_objects_hotkey_keymaps:
|
||||
km.keymap_items.remove(kmi)
|
||||
addon_disable_objects_hotkey_keymaps.clear()
|
||||
|
||||
|
||||
def register_cm():
|
||||
for cls in classes:
|
||||
bpy.utils.register_class(cls)
|
||||
|
||||
bpy.types.Scene.collection_manager = PointerProperty(type=CollectionManagerProperties)
|
||||
|
||||
# create the global menu hotkey
|
||||
wm = bpy.context.window_manager
|
||||
if wm.keyconfigs.addon: # not present when started with --background
|
||||
km = wm.keyconfigs.addon.keymaps.new(name='Object Mode')
|
||||
kmi = km.keymap_items.new('view3d.collection_manager', 'M', 'PRESS')
|
||||
addon_keymaps.append((km, kmi))
|
||||
|
||||
# Add Collection Manager & QCD Move Widget to the Object->Collections menu
|
||||
bpy.types.VIEW3D_MT_object_collection.prepend(menu_addition)
|
||||
|
||||
# Add Disable Object Operators to the Object->Show/Hide menu
|
||||
bpy.types.VIEW3D_MT_object_showhide.append(disable_objects_menu_addition)
|
||||
|
||||
bpy.app.handlers.depsgraph_update_post.append(depsgraph_update_post_handler)
|
||||
bpy.app.handlers.undo_post.append(undo_redo_post_handler)
|
||||
bpy.app.handlers.redo_post.append(undo_redo_post_handler)
|
||||
|
||||
preferences = bpy.context.preferences.addons[__package__].preferences
|
||||
if preferences.enable_disable_objects_override:
|
||||
register_disable_objects_hotkeys()
|
||||
|
||||
def unregister_cm():
|
||||
preferences = bpy.context.preferences.addons[__package__].preferences
|
||||
if preferences.enable_disable_objects_override:
|
||||
unregister_disable_objects_hotkeys()
|
||||
|
||||
for cls in classes:
|
||||
bpy.utils.unregister_class(cls)
|
||||
|
||||
# Remove Collection Manager & QCD Move Widget from the Object->Collections menu
|
||||
bpy.types.VIEW3D_MT_object_collection.remove(menu_addition)
|
||||
|
||||
# Remove Disable Object Operators to the Object->Show/Hide menu
|
||||
bpy.types.VIEW3D_MT_object_showhide.remove(disable_objects_menu_addition)
|
||||
|
||||
bpy.app.handlers.depsgraph_update_post.remove(depsgraph_update_post_handler)
|
||||
bpy.app.handlers.undo_post.remove(undo_redo_post_handler)
|
||||
bpy.app.handlers.redo_post.remove(undo_redo_post_handler)
|
||||
|
||||
del bpy.types.Scene.collection_manager
|
||||
|
||||
# remove keymaps when add-on is deactivated
|
||||
for km, kmi in addon_keymaps:
|
||||
km.keymap_items.remove(kmi)
|
||||
addon_keymaps.clear()
|
Loading…
Reference in New Issue