nodeslicer/__init__.py
2026-10-14 12:02:15 +03:00

69 lines
2.1 KiB
Python

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
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",
}
_keymaps = []
def register():
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)
# Register Keymaps
wm = bpy.context.window_manager
assert wm
if wm.keyconfigs.addon:
km = wm.keyconfigs.addon.keymaps.new(name='Node Editor', space_type='NODE_EDITOR')
kmi = km.keymap_items.new("slicenode.group_make", 'G', 'PRESS', ctrl=True)
_keymaps.append((km, kmi))
kmi = km.keymap_items.new("node.group_ungroup", 'G', 'PRESS', ctrl=True, alt=True)
_keymaps.append((km, kmi))
# Custom Tab toggle for groups
kmi = km.keymap_items.new("slicenode.group_toggle", 'TAB', 'PRESS')
_keymaps.append((km, kmi))
print('Nodeslicer Loaded')
def unregister():
try:
tree.cancel_timer()
except Exception as e:
print(f"Error canceling timer: {e}")
try:
if tree.depsgraph_update_handler in bpy.app.handlers.depsgraph_update_post:
bpy.app.handlers.depsgraph_update_post.remove(tree.depsgraph_update_handler)
except Exception as e:
print(f"Error removing handler: {e}")
try:
bpy.types.NODE_MT_add.remove(tree.draw_add_menu)
except Exception as e:
print(f"Error removing menu: {e}")
# Unregister Keymaps safely
try:
for km, kmi in _keymaps:
km.keymap_items.remove(kmi)
except Exception as e:
print(f"Error removing keymaps: {e}")
finally:
_keymaps.clear()
registry.blender_unregister_classes()
print('Nodeslicer Unloaded')
if __name__ == "__main__":
register()