64 lines
2 KiB
Python
64 lines
2 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:
|
|
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()
|