Compare commits
6
Commits
90aa72a767
...
refactor
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
510de4253d | ||
|
|
cf5095202b | ||
|
|
dc253425f8 | ||
|
|
7af137867b | ||
|
|
8f4d7d5684 | ||
|
|
2f75f7492d |
+8
-13
@@ -14,7 +14,7 @@ import bpy
|
||||
from bpy.props import BoolProperty, EnumProperty
|
||||
from bpy.types import Operator
|
||||
|
||||
from .dumper import dump_nodes, load_nodes
|
||||
from .dumper import serialize_selected_nodes_from_node_tree, deserialize_nodes_into_node_tree
|
||||
from .node_utils import remap_node_group_duplicates
|
||||
from .pack_nodes import combine_objects, extract_objects
|
||||
from .formats import dump_nkit_format, parse_nkit_format
|
||||
@@ -28,18 +28,12 @@ class NODEKIT_OT_copy(Operator):
|
||||
|
||||
def execute(self, context):
|
||||
ntree = context.space_data.edit_tree
|
||||
selected_nodes = [node for node in ntree.nodes if node.select]
|
||||
serialized_nodes_data = serialize_selected_nodes_from_node_tree(ntree)
|
||||
|
||||
ntree_data = {
|
||||
"nodes": dump_nodes(selected_nodes),
|
||||
"links": dump_nodes(
|
||||
[l for l in ntree.links if l.from_node.select and l.to_node.select]
|
||||
),
|
||||
}
|
||||
context.window_manager.clipboard = dump_nkit_format(serialized_nodes_data)
|
||||
|
||||
context.window_manager.clipboard = dump_nkit_format(ntree_data)
|
||||
|
||||
self.report({"INFO"}, f"Copied {len(selected_nodes)} selected nodes to system clipboard")
|
||||
num_selected_nodes = len([n for n in ntree.nodes if n.select])
|
||||
self.report({"INFO"}, f"Copied {num_selected_nodes} selected nodes to system clipboard")
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
@@ -55,7 +49,8 @@ class NODEKIT_OT_copy_tree(Operator):
|
||||
|
||||
context.window_manager.clipboard = dump_nkit_format(ntree_data)
|
||||
|
||||
self.report({"INFO"}, f"Copied {len(ntree.nodes)} selected nodes to system clipboard")
|
||||
num_nodes = len(ntree.nodes)
|
||||
self.report({"INFO"}, f"Copied {num_nodes} selected nodes to system clipboard")
|
||||
return {"FINISHED"}
|
||||
|
||||
|
||||
@@ -67,7 +62,7 @@ class NODEKIT_OT_paste(Operator):
|
||||
|
||||
def execute(self, context):
|
||||
ntree_data = parse_nkit_format(context.window_manager.clipboard)
|
||||
load_nodes(ntree_data, context.space_data.edit_tree)
|
||||
deserialize_nodes_into_node_tree(ntree_data, context.space_data.edit_tree)
|
||||
|
||||
self.report({"INFO"}, f"X node(s) pasted from system clipboard") # TODO: Ge the number of parsed nodes returned
|
||||
return {"FINISHED"}
|
||||
|
||||
@@ -1,6 +1,21 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
import bpy
|
||||
|
||||
|
||||
|
||||
@dataclass
|
||||
class BlenderProperty:
|
||||
"""
|
||||
Blender Property abstraction, used since a Blender property value isn't
|
||||
directly accessible from its Property object representation
|
||||
NOTE: Do not rely on value being up-to-date, data will get stall
|
||||
"""
|
||||
rep: bpy.types.Property
|
||||
attr: Any
|
||||
|
||||
|
||||
def all_subclasses(cls):
|
||||
return set(cls.__subclasses__()).union(
|
||||
[s for c in cls.__subclasses__() for s in all_subclasses(c)]
|
||||
|
||||
Reference in New Issue
Block a user