| 
									
										
										
										
											2025-01-22 16:18:30 +01:00
										 |  |  | from lnx.logicnode.lnx_nodes import * | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class SetElementDataNode(LnxLogicTreeNode): | 
					
						
							|  |  |  |     """Set Element Data""" | 
					
						
							|  |  |  |     bl_idname = 'LNSetElementDataNode' | 
					
						
							|  |  |  |     bl_label = 'Set Element Data' | 
					
						
							|  |  |  |     bl_description = 'Set Element Data' | 
					
						
							|  |  |  |     lnx_category = 'HTML' | 
					
						
							|  |  |  |     lnx_version = 1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @staticmethod | 
					
						
							|  |  |  |     def get_enum_id_value(obj, prop_name, value): | 
					
						
							|  |  |  |         return obj.bl_rna.properties[prop_name].enum_items[value].identifier | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @staticmethod | 
					
						
							|  |  |  |     def get_count_in(type_name): | 
					
						
							|  |  |  |         return { | 
					
						
							|  |  |  |             'attribute': 0, | 
					
						
							|  |  |  |             'property': 1 | 
					
						
							|  |  |  |         }.get(type_name, 0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_enum(self): | 
					
						
							|  |  |  |         return self.get('property0', 0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def set_enum(self, value): | 
					
						
							|  |  |  |         select_current = self.get_enum_id_value(self, 'property0', value) | 
					
						
							|  |  |  |         select_prev = self.property0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if select_prev != select_current: | 
					
						
							|  |  |  |             for i in self.inputs: | 
					
						
							|  |  |  |                 self.inputs.remove(i) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (self.get_count_in(select_current) == 0):             | 
					
						
							|  |  |  |                 self.add_input('LnxNodeSocketAction', 'In') | 
					
						
							|  |  |  |                 self.add_input('LnxDynamicSocket', 'Element') | 
					
						
							|  |  |  |                 self.add_input('LnxStringSocket', 'Attribute') | 
					
						
							|  |  |  |                 self.add_input('LnxDynamicSocket', 'Data') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (self.get_count_in(select_current) == 1):             | 
					
						
							|  |  |  |                 self.add_input('LnxNodeSocketAction', 'In') | 
					
						
							|  |  |  |                 self.add_input('LnxDynamicSocket', 'Element') | 
					
						
							|  |  |  |                 self.add_input('LnxStringSocket', 'Property') | 
					
						
							|  |  |  |                 self.add_input('LnxDynamicSocket', 'Data') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self['property0'] = value | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     property0: HaxeEnumProperty( | 
					
						
							|  |  |  |         'property0', | 
					
						
							|  |  |  |         items = [('attribute', 'Attribute', 'Set Element Attribute'), | 
					
						
							|  |  |  |                 ('property', 'Property', 'Set Element Property')], | 
					
						
							|  |  |  |         name='',  | 
					
						
							|  |  |  |         default='attribute', | 
					
						
							|  |  |  |         set=set_enum,  | 
					
						
							|  |  |  |         get=get_enum) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-03 09:43:13 +00:00
										 |  |  |     def __init__(self, *args, **kwargs): | 
					
						
							|  |  |  |         super(SetElementDataNode, self).__init__(*args, **kwargs) | 
					
						
							| 
									
										
										
										
											2025-01-22 16:18:30 +01:00
										 |  |  |         array_nodes[str(id(self))] = self | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def init(self, context): | 
					
						
							|  |  |  |         self.add_input('LnxNodeSocketAction', 'In') | 
					
						
							|  |  |  |         self.add_input('LnxDynamicSocket', 'Element') | 
					
						
							|  |  |  |         self.add_input('LnxStringSocket', 'Attribute') | 
					
						
							|  |  |  |         self.add_input('LnxDynamicSocket', 'Data') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self.add_output('LnxNodeSocketAction', 'Out') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw_buttons(self, context, layout): | 
					
						
							|  |  |  |         layout.prop(self, 'property0') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def register(): | 
					
						
							|  |  |  |     add_category('HTML', icon='SEQ_STRIP_META') | 
					
						
							|  |  |  |     SetElementDataNode.on_register() |