Skip to content

Commit c2b3a0d

Browse files
Merge pull request #135 from BrendanParmer/MenuSocketFixes
Menu socket fixes
2 parents 0b74b8b + 511447f commit c2b3a0d

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

CONTRIBUTORS.md

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
* [Brendan Parmer](https://github.com/BrendanParmer)
2+
* [Carlsu](https://github.com/carls3d)
3+
* [atticus-lv](https://github.com/atticus-lv)

NodeToPython/ntp_operator.py

+26-2
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import datetime
1313
import os
1414
import shutil
15-
from typing import TextIO
15+
from typing import TextIO, Callable
1616

1717
from .license_templates import license_templates
1818
from .ntp_node_tree import NTP_NodeTree
@@ -66,6 +66,9 @@ class NTP_Operator(Operator):
6666
def __init__(self):
6767
super().__init__()
6868

69+
# Write functions after nodes are mostly initialized and linked up
70+
self._write_after_links: list[Callable] = []
71+
6972
# File (TextIO) or string (StringIO) the add-on/script is generated into
7073
self._file: TextIO = None
7174

@@ -538,7 +541,21 @@ def _set_tree_socket_defaults(self, socket_interface: NodeTreeInterfaceSocket,
538541

539542
dv = socket_interface.default_value
540543

541-
if type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor:
544+
if type(socket_interface) is bpy.types.NodeTreeInterfaceSocketMenu:
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+
)
557+
return
558+
elif type(socket_interface) == bpy.types.NodeTreeInterfaceSocketColor:
542559
dv = vec4_to_py_str(dv)
543560
elif type(dv) in {mathutils.Vector, mathutils.Euler}:
544561
dv = vec3_to_py_str(dv)
@@ -784,6 +801,8 @@ def _set_input_defaults(self, node: Node) -> None:
784801

785802
#menu
786803
elif input.bl_idname == 'NodeSocketMenu':
804+
if input.default_value == '':
805+
continue
787806
default_val = enum_to_py_str(input.default_value)
788807

789808
# images
@@ -1329,6 +1348,11 @@ def _init_links(self, node_tree: NodeTree) -> None:
13291348
f".outputs[{input_idx}], "
13301349
f"{out_node_var}.inputs[{output_idx}])")
13311350

1351+
for _func in self._write_after_links:
1352+
_func()
1353+
self._write_after_links = []
1354+
1355+
13321356
def _set_node_tree_properties(self, node_tree: NodeTree) -> None:
13331357
nt_var = self._node_tree_vars[node_tree]
13341358

0 commit comments

Comments
 (0)