65 lines
1.9 KiB
Python
65 lines
1.9 KiB
Python
import bpy
|
|
from bpy.app.handlers import persistent
|
|
from .interface.menus.rightclick import serpens_right_click
|
|
from . import bl_info
|
|
from .nodes.compiler import compile_addon, unregister_addon
|
|
from .settings.updates import check_serpens_updates
|
|
from .settings.easybpy import check_easy_bpy_install
|
|
from .settings.handle_script_changes import (
|
|
unwatch_script_changes,
|
|
watch_script_changes,
|
|
update_script_nodes,
|
|
)
|
|
from .extensions.snippet_ops import load_snippets
|
|
from .msgbus import subscribe_to_name_change
|
|
|
|
|
|
@persistent
|
|
def depsgraph_handler(dummy):
|
|
for group in bpy.data.node_groups:
|
|
if group.bl_idname == "ScriptingNodesTree":
|
|
group.use_fake_user = True
|
|
# add empty collection for node drawing
|
|
if not "empty" in group.node_refs:
|
|
group.node_refs.add().name = "empty"
|
|
|
|
|
|
@persistent
|
|
def load_handler(dummy):
|
|
if hasattr(bpy.context.scene, "sn"):
|
|
bpy.context.scene.sn.picker_active = False
|
|
subscribe_to_name_change()
|
|
check_easy_bpy_install()
|
|
if bpy.context.scene.sn.compile_on_load:
|
|
compile_addon()
|
|
check_serpens_updates(bl_info["version"])
|
|
bpy.ops.sn.reload_packages()
|
|
load_snippets()
|
|
bpy.context.scene.sn.hide_preferences = False
|
|
unwatch_script_changes()
|
|
if bpy.context.scene.sn.watch_script_changes:
|
|
watch_script_changes()
|
|
|
|
|
|
@persistent
|
|
def unload_handler(dummy=None):
|
|
if hasattr(bpy.context.scene, "sn"):
|
|
unwatch_script_changes()
|
|
unregister_addon()
|
|
|
|
|
|
@persistent
|
|
def undo_post(dummy=None):
|
|
if hasattr(bpy.context, "space_data") and hasattr(
|
|
bpy.context.space_data, "node_tree"
|
|
):
|
|
ntree = bpy.context.space_data.node_tree
|
|
if ntree.bl_idname == "ScriptingNodesTree":
|
|
compile_addon()
|
|
|
|
|
|
@persistent
|
|
def save_pre(dummy=None):
|
|
if bpy.context.scene.sn.watch_script_changes:
|
|
update_script_nodes(True)
|