Skip to content

Commit 4f443db

Browse files
committed
fix: no menu linked cases, functions only executed per tree, minor cleanup
1 parent 056aa52 commit 4f443db

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

NodeToPython/ntp_operator.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ class NTP_Operator(Operator):
6666
def __init__(self):
6767
super().__init__()
6868

69-
# Call function after all the writes, such as the menu switch node and the menu socket
70-
self._write_after_link: list[Callable] | None = None
69+
# Write functions after nodes are mostly initialized and linked up
70+
self._write_after_links: list[Callable] = []
7171

7272
# File (TextIO) or string (StringIO) the add-on/script is generated into
7373
self._file: TextIO = None
@@ -541,16 +541,21 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket,
541541

542542
dv = socket_interface.default_value
543543

544-
# notice that the Node Socket Menu should be assign value after link to a menu switch node
545544
if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu:
546-
if not self._write_after_link:
547-
self._write_after_link = []
548-
549-
self._write_after_link.append(
550-
lambda _var=socket_var, _dv=dv: self._write(f"{_var}.default_value = '{_dv}'"))
545+
if dv == "":
546+
self.report({'WARNING'},
547+
"NodeToPython: No menu found for socket "
548+
f"{socket_interface.name}"
549+
)
550+
return
551+
552+
self._write_after_links.append(
553+
lambda _socket_var=socket_var, _dv=enum_to_py_str(dv): (
554+
self._write(f"{_socket_var}.default_value = {_dv}")
555+
)
556+
)
551557
return
552-
553-
if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor:
558+
elif type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor:
554559
dv = vec4_to_py_str(dv)
555560
elif type(dv) in {mathutils.Vector, mathutils.Euler}:
556561
dv = vec3_to_py_str(dv)
@@ -796,6 +801,8 @@ def _set_input_defaults(self, node: Node) -> None:
796801

797802
#menu
798803
elif input.bl_idname == 'NodeSocketMenu':
804+
if input.default_value == '':
805+
continue
799806
default_val = enum_to_py_str(input.default_value)
800807

801808
# images
@@ -1341,9 +1348,10 @@ def _init_links(self, node_tree: NodeTree) -> None:
13411348
f".outputs[{input_idx}], "
13421349
f"{out_node_var}.inputs[{output_idx}])")
13431350

1344-
if self._write_after_link:
1345-
for _func in self._write_after_link:
1346-
_func()
1351+
for _func in self._write_after_links:
1352+
_func()
1353+
self._write_after_links = []
1354+
13471355

13481356
def _set_node_tree_properties(self, node_tree: NodeTree) -> None:
13491357
nt_var = self._node_tree_vars[node_tree]

0 commit comments

Comments
 (0)