Further Operators / UI Improvements
parent
4e029c59a2
commit
698ace38fd
50
operators.py
50
operators.py
|
@ -1,5 +1,5 @@
|
|||
"""
|
||||
This module contains all addons operators
|
||||
Node Kit Operators
|
||||
|
||||
:author: Autour de Minuit
|
||||
:maintainers: Florentin LUCE
|
||||
|
@ -21,38 +21,51 @@ from .core.pack_nodes import combine_objects, extract_objects
|
|||
|
||||
|
||||
class NODEKIT_OT_copy(Operator):
|
||||
bl_idname = "node_kit.copy_node_tree"
|
||||
bl_label = "Copy nodes"
|
||||
bl_idname = "node_kit.copy_nodes"
|
||||
bl_label = "Copy Nodes"
|
||||
bl_description = "Copy nodes to system clipboard"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
select_only: BoolProperty(default=True) # TODO: Expose/rework this property properly - No F3 panel in Node Editor - Only F9
|
||||
|
||||
def execute(self, context):
|
||||
ntree = context.space_data.edit_tree
|
||||
if self.select_only:
|
||||
selected_nodes = [node for node in ntree.nodes if node.select]
|
||||
|
||||
ntree_data = {
|
||||
"nodes": dump_nodes(
|
||||
[n for n in ntree.nodes if n.select]
|
||||
), # [dump(n) for n in ntree.nodes if n.select],
|
||||
"nodes": dump_nodes(selected_nodes),
|
||||
"links": dump_nodes(
|
||||
[l for l in ntree.links if l.from_node.select and l.to_node.select]
|
||||
),
|
||||
}
|
||||
else:
|
||||
|
||||
pprint(ntree_data)
|
||||
|
||||
context.window_manager.clipboard = json.dumps(ntree_data)
|
||||
|
||||
self.report({"INFO"}, f"Copied {len(selected_nodes)} selected nodes to system clipboard")
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class NODEKIT_OT_copy_tree(Operator):
|
||||
bl_idname = "node_kit.copy_node_tree"
|
||||
bl_label = "Copy Node Tree"
|
||||
bl_description = "Copy node tree to system clipboard"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
def execute(self, context):
|
||||
ntree = context.space_data.edit_tree
|
||||
ntree_data = dump_nodes(ntree)
|
||||
|
||||
pprint(ntree_data)
|
||||
|
||||
context.window_manager.clipboard = json.dumps(ntree_data)
|
||||
|
||||
self.report({"INFO"}, f"Copied 5 selected nodes to system clipboard")
|
||||
self.report({"INFO"}, f"Copied {len(ntree.nodes)} selected nodes to system clipboard")
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class NODEKIT_OT_paste(Operator):
|
||||
bl_idname = "node_kit.paste_node_tree"
|
||||
bl_label = "Paste nodes"
|
||||
bl_idname = "node_kit.paste_nodes"
|
||||
bl_label = "Paste Nodes"
|
||||
bl_description = "Paste nodes from system clipboard"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
|
@ -60,13 +73,13 @@ class NODEKIT_OT_paste(Operator):
|
|||
ntree_data = json.loads(context.window_manager.clipboard)
|
||||
load_nodes(ntree_data, context.space_data.edit_tree)
|
||||
|
||||
self.report({"INFO"}, f"5 node(s) pasted from system clipboard")
|
||||
self.report({"INFO"}, f"X node(s) pasted from system clipboard") # TODO: Ge the number of parsed nodes returned
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
class NODEKIT_OT_remap_node_group_duplicates(Operator):
|
||||
bl_idname = "node_kit.remap_node_group_duplicates"
|
||||
bl_label = "Clean nodes"
|
||||
bl_label = "Remap Node Groups Duplicates"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
selection: EnumProperty(
|
||||
|
@ -127,7 +140,7 @@ class NODEKIT_OT_remap_node_group_duplicates(Operator):
|
|||
|
||||
class NODEKIT_OT_update_nodes(Operator):
|
||||
bl_idname = "node_kit.update_nodes"
|
||||
bl_label = "Update node"
|
||||
bl_label = "Update Nodes"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
selection: EnumProperty(
|
||||
|
@ -237,7 +250,7 @@ class NODEKIT_OT_update_nodes(Operator):
|
|||
|
||||
class NODEKIT_OT_pack_nodes(Operator):
|
||||
bl_idname = "node_kit.pack_nodes"
|
||||
bl_label = "Update node"
|
||||
bl_label = "Pack Nodes"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
def execute(self, context):
|
||||
|
@ -247,7 +260,7 @@ class NODEKIT_OT_pack_nodes(Operator):
|
|||
|
||||
class NODEKIT_OT_unpack_nodes(Operator):
|
||||
bl_idname = "node_kit.unpack_nodes"
|
||||
bl_label = "Update node"
|
||||
bl_label = "Unpack Nodes"
|
||||
bl_options = {"REGISTER", "UNDO"}
|
||||
|
||||
def execute(self, context):
|
||||
|
@ -257,6 +270,7 @@ class NODEKIT_OT_unpack_nodes(Operator):
|
|||
|
||||
classes = (
|
||||
NODEKIT_OT_copy,
|
||||
NODEKIT_OT_copy_tree,
|
||||
NODEKIT_OT_paste,
|
||||
NODEKIT_OT_remap_node_group_duplicates,
|
||||
NODEKIT_OT_update_nodes,
|
||||
|
|
34
ui.py
34
ui.py
|
@ -1,5 +1,5 @@
|
|||
"""
|
||||
This module contains blender UI elements
|
||||
Node Kit UI elements and menus.
|
||||
|
||||
:author: Autour de Minuit
|
||||
:maintainers: Florentin LUCE
|
||||
|
@ -15,22 +15,22 @@ class NODEKIT_MT_node_kit(bpy.types.Menu):
|
|||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("node_kit.copy_node_tree", text="Copy Nodes", icon="COPYDOWN")
|
||||
layout.operator(
|
||||
"node_kit.paste_node_tree", text="Paste Nodes", icon="PASTEDOWN"
|
||||
)
|
||||
layout.operator("node_kit.copy_nodes", icon="COPYDOWN")
|
||||
layout.operator("node_kit.paste_nodes", icon="PASTEDOWN")
|
||||
|
||||
layout.separator()
|
||||
layout.operator(
|
||||
"node_kit.remap_node_group_duplicates",
|
||||
text="Remap Node Groups Duplicates",
|
||||
icon="NODE_INSERT_OFF",
|
||||
)
|
||||
layout.operator("node_kit.update_nodes", text="Update Nodes", icon="IMPORT")
|
||||
|
||||
layout.operator("node_kit.copy_node_tree", icon="NODETREE")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("node_kit.pack_nodes", text="Pack Nodes", icon="PACKAGE")
|
||||
layout.operator(
|
||||
"node_kit.unpack_nodes", text="UnPack Nodes", icon="UGLYPACKAGE"
|
||||
)
|
||||
|
||||
layout.operator("node_kit.remap_node_group_duplicates",icon="NODE_INSERT_OFF")
|
||||
layout.operator("node_kit.update_nodes", icon="IMPORT")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("node_kit.pack_nodes", icon="PACKAGE")
|
||||
layout.operator("node_kit.unpack_nodes", icon="UGLYPACKAGE")
|
||||
|
||||
|
||||
classes = (NODEKIT_MT_node_kit,)
|
||||
|
@ -48,7 +48,7 @@ def register():
|
|||
|
||||
|
||||
def unregister():
|
||||
bpy.types.NODE_MT_editor_menus.remove(draw_menu)
|
||||
|
||||
for c in reversed(classes):
|
||||
bpy.utils.unregister_class(c)
|
||||
|
||||
bpy.types.NODE_MT_editor_menus.remove(draw_menu)
|
||||
|
|
Loading…
Reference in New Issue