from __future__ import annotations import bpy from . import registry from .core.nodeslicer import sockets, nodes, tree # sockets and nodes need also to be imported in order for them to be autoregistered from .ui import panels from .property_groups.bpy_property_groups import SlicerObjectPropertyGroup bl_info = { "name": "NodeSlicer", "author": "Nicolas Predella", "version": (0, 1, 0), "blender": (3, 6, 0), "location": "Node Editor > Add", "description": "Prepare GCodes with Nodes", "category": "Node", } _registered_nodeslicer = False def register(): global _registered_nodeslicer registry.blender_register_classes() bpy.types.NODE_MT_add.append(tree.draw_add_menu) bpy.app.handlers.depsgraph_update_post.append(tree.depsgraph_update_handler) if not hasattr(bpy.types.Object, "nodeslicer"): bpy.types.Object.nodeslicer = bpy.props.PointerProperty(type=SlicerObjectPropertyGroup, name="nodeslicer") #type: ignore _registered_nodeslicer = True print('Nodeslicer Loaded') def unregister(): global _registered_nodeslicer if tree.depsgraph_update_handler in bpy.app.handlers.depsgraph_update_post: bpy.app.handlers.depsgraph_update_post.remove(tree.depsgraph_update_handler) bpy.types.NODE_MT_add.remove(tree.draw_add_menu) registry.blender_unregister_classes() if _registered_nodeslicer: if hasattr(bpy.types.Object, "nodeslicer"): del bpy.types.Object.nodeslicer #type: ignore _registered_nodeslicer = False print('Nodeslicer Unloaded') if __name__ == "__main__": register()