@@ -347,6 +347,8 @@ def _set_settings_defaults(self, node: Node) -> None:
347347 self ._image_user_settings (attr , f"{ node_var } .{ attr_name } " )
348348 elif st == ST .INDEX_SWITCH_ITEMS :
349349 self ._index_switch_items (attr , f"{ node_var } .{ attr_name } " )
350+ elif st == ST .ENUM_DEFINITION :
351+ self ._enum_definition (attr , f"{ node_var } .{ attr_name } " )
350352
351353 if bpy .app .version < (4 , 0 , 0 ):
352354 def _set_group_socket_defaults (self , socket_interface : NodeSocketInterface ,
@@ -705,6 +707,10 @@ def _set_input_defaults(self, node: Node) -> None:
705707 elif input .bl_idname == 'NodeSocketString' :
706708 default_val = str_to_py_str (input .default_value )
707709
710+ #menu
711+ elif input .bl_idname == 'NodeSocketMenu' :
712+ default_val = enum_to_py_str (input .default_value )
713+
708714 # images
709715 elif input .bl_idname == 'NodeSocketImage' :
710716 img = input .default_value
@@ -1060,6 +1066,23 @@ def _index_switch_items(self, switch_items: bpy.types.NodeIndexSwitchItems,
10601066 for i in range (num_items ):
10611067 self ._write (f"{ items_str } .new()" )
10621068
1069+ def _enum_definition (self , enum_def : bpy .types .NodeEnumDefinition ,
1070+ enum_def_str : str ) -> None :
1071+ """
1072+ Set enum definition item for a node
1073+
1074+ Parameters:
1075+ enum_def (bpy.types.NodeEnumDefinition): enum definition to replicate
1076+ enum_def_str (str): string for the generated enum definition
1077+ """
1078+ self ._write (f"{ enum_def_str } .enum_items.clear()" )
1079+ for i , enum_item in enumerate (enum_def .enum_items ):
1080+ name = str_to_py_str (enum_item .name )
1081+ self ._write (f"{ enum_def_str } .enum_items.new({ name } )" )
1082+ if enum_item .description != "" :
1083+ self ._write (f"{ enum_def_str } .enum_items[{ i } ].description = "
1084+ f"{ str_to_py_str (enum_item .description )} " )
1085+
10631086
10641087 def _set_parents (self , node_tree : NodeTree ) -> None :
10651088 """
0 commit comments