mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
move override panel methods to tool.Blender
to keep them close, so it will be easier to keep them in sync
This commit is contained in:
@@ -296,17 +296,10 @@ def unregister():
|
||||
km.keymap_items.remove(kmi)
|
||||
addon_keymaps.clear()
|
||||
|
||||
for panel, poll in tuple(original_scene_panels_polls.items()):
|
||||
if poll is None:
|
||||
del panel.poll
|
||||
else:
|
||||
panel.poll = poll
|
||||
# panel might be already unregisterd during blender exit
|
||||
# or if it's addon was disabled
|
||||
if panel.is_registered:
|
||||
# reregister to activate new poll
|
||||
bpy.utils.unregister_class(panel)
|
||||
bpy.utils.register_class(panel)
|
||||
del original_scene_panels_polls[panel]
|
||||
import blenderbim.tool as tool
|
||||
|
||||
# use tuple() as method will be removing keys from dict
|
||||
for panel in tuple(original_scene_panels_polls.keys()):
|
||||
tool.Blender.remove_scene_panel_override(panel)
|
||||
|
||||
bpy.app.translations.unregister("blenderbim")
|
||||
|
||||
@@ -255,32 +255,6 @@ def viewport_shading_changed_callback(area):
|
||||
bpy.context.scene.BIMStylesProperties.active_style_type = "External"
|
||||
|
||||
|
||||
@classmethod
|
||||
def poll_check_blender_tab(cls, context):
|
||||
return tool.Blender.is_tab(context, "BLENDER")
|
||||
|
||||
|
||||
def override_scene_panel(original_panel: bpy.types.Panel) -> None:
|
||||
polls = blenderbim.bim.original_scene_panels_polls
|
||||
|
||||
# override poll method
|
||||
if not hasattr(original_panel, "poll"):
|
||||
polls[original_panel] = None
|
||||
original_panel.poll = poll_check_blender_tab
|
||||
else:
|
||||
polls[original_panel] = original_panel.poll
|
||||
|
||||
@classmethod
|
||||
def wrapped_poll(cls, context):
|
||||
return polls[cls](context) and poll_check_blender_tab.__func__(cls, context)
|
||||
|
||||
original_panel.poll = wrapped_poll
|
||||
|
||||
# reregister to activate new poll
|
||||
bpy.utils.unregister_class(original_panel)
|
||||
bpy.utils.register_class(original_panel)
|
||||
|
||||
|
||||
@persistent
|
||||
def load_post(scene):
|
||||
global global_subscription_owner
|
||||
@@ -322,5 +296,5 @@ def load_post(scene):
|
||||
for panel in tool.Blender.get_scene_panels_list():
|
||||
if panel in blenderbim.bim.original_scene_panels_polls:
|
||||
continue
|
||||
override_scene_panel(panel)
|
||||
tool.Blender.override_scene_panel(panel)
|
||||
tool.Blender.setup_tabs()
|
||||
|
||||
@@ -934,3 +934,46 @@ class Blender(blenderbim.core.tool.Blender):
|
||||
|
||||
assert set(items) == set(final_items), "Sorted list doesn't match original"
|
||||
return final_items
|
||||
|
||||
@classmethod
|
||||
def override_scene_panel(cls, original_panel: bpy.types.Panel) -> None:
|
||||
@classmethod
|
||||
def poll_check_blender_tab(cls, context):
|
||||
return tool.Blender.is_tab(context, "BLENDER")
|
||||
|
||||
polls = blenderbim.bim.original_scene_panels_polls
|
||||
|
||||
# override poll method
|
||||
if not hasattr(original_panel, "poll"):
|
||||
polls[original_panel] = None
|
||||
original_panel.poll = poll_check_blender_tab
|
||||
else:
|
||||
polls[original_panel] = original_panel.poll
|
||||
|
||||
@classmethod
|
||||
def wrapped_poll(cls, context):
|
||||
return polls[cls](context) and poll_check_blender_tab.__func__(cls, context)
|
||||
|
||||
original_panel.poll = wrapped_poll
|
||||
|
||||
# reregister to activate new poll
|
||||
bpy.utils.unregister_class(original_panel)
|
||||
bpy.utils.register_class(original_panel)
|
||||
|
||||
@classmethod
|
||||
def remove_scene_panel_override(cls, panel: bpy.types.Panel) -> None:
|
||||
polls = blenderbim.bim.original_scene_panels_polls
|
||||
|
||||
poll = polls[panel]
|
||||
if poll is None:
|
||||
del panel.poll
|
||||
else:
|
||||
panel.poll = poll
|
||||
|
||||
# panel might be already unregistered during blender exit
|
||||
# or if it's addon was disabled
|
||||
if panel.is_registered:
|
||||
# reregister to activate new poll
|
||||
bpy.utils.unregister_class(panel)
|
||||
bpy.utils.register_class(panel)
|
||||
del polls[panel]
|
||||
|
||||
Reference in New Issue
Block a user