| 
									
										
										
										
											2025-01-22 16:18:30 +01:00
										 |  |  | from lnx.logicnode.lnx_nodes import * | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class GetDateTimeNode(LnxLogicTreeNode): | 
					
						
							|  |  |  |     """Returns the values of the current date and time.""" | 
					
						
							|  |  |  |     bl_idname = 'LNGetDateTimeNode' | 
					
						
							|  |  |  |     bl_label = 'Get Date and Time' | 
					
						
							|  |  |  |     lnx_section = 'Native' | 
					
						
							|  |  |  |     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 { | 
					
						
							|  |  |  |             'now': 0, | 
					
						
							|  |  |  |             'timestamp': 1, | 
					
						
							|  |  |  |             'timeZoneOffSet': 2, | 
					
						
							|  |  |  |             'weekday': 3, | 
					
						
							|  |  |  |             'day': 4, | 
					
						
							|  |  |  |             'month': 5, | 
					
						
							|  |  |  |             'year': 6, | 
					
						
							|  |  |  |             'hours': 7, | 
					
						
							|  |  |  |             'minutes': 8, | 
					
						
							|  |  |  |             'seconds': 9, | 
					
						
							|  |  |  |             'all': 10, | 
					
						
							|  |  |  |             'formatted': 11, | 
					
						
							|  |  |  |         }.get(type_name, 10) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def get_enum(self): | 
					
						
							|  |  |  |         return self.get('property0', 10) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def set_enum(self, value): | 
					
						
							|  |  |  |         # Checking the selection of each type | 
					
						
							|  |  |  |         select_current = self.get_enum_id_value(self, 'property0', value) | 
					
						
							|  |  |  |         select_prev = self.property0 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         #Check if type changed | 
					
						
							|  |  |  |         if select_prev != select_current: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             for i in self.inputs: | 
					
						
							|  |  |  |                 self.inputs.remove(i) | 
					
						
							|  |  |  |             for i in self.outputs: | 
					
						
							|  |  |  |                 self.outputs.remove(i) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             if (self.get_count_in(select_current) == 0): | 
					
						
							|  |  |  |                     self.add_output('LnxStringSocket', 'Date') | 
					
						
							|  |  |  |             elif (self.get_count_in(select_current) == 10): | 
					
						
							|  |  |  |                     self.add_input('LnxNodeSocketAction', 'In') | 
					
						
							|  |  |  |                     self.add_output('LnxNodeSocketAction', 'Out') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Timestamp') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Timezone Offset') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Weekday') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Day') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Month') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Year') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Hours') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Minutes') | 
					
						
							|  |  |  |                     self.add_output('LnxIntSocket', 'Seconds') | 
					
						
							|  |  |  |             elif (self.get_count_in(select_current) == 11): | 
					
						
							|  |  |  |                     self.add_input('LnxStringSocket', 'Format', default_value="%Y/%m/%d - %H:%M:%S") | 
					
						
							|  |  |  |                     self.add_output('LnxStringSocket', 'Date') | 
					
						
							|  |  |  |             else: | 
					
						
							|  |  |  |                 self.add_output('LnxIntSocket', 'Value') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         self['property0'] = value | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     property0: HaxeEnumProperty( | 
					
						
							|  |  |  |         'property0', | 
					
						
							|  |  |  |         items = [('now', 'Now', 'Returns a Date representing the current local time.'), | 
					
						
							|  |  |  |                 ('timestamp', 'Timestamp', 'Returns the timestamp (in milliseconds) of this date'), | 
					
						
							|  |  |  |                 ('timeZoneOffSet', 'Timezone Offset', 'Returns the time zone difference of this Date in the current locale to UTC, in minutes'), | 
					
						
							|  |  |  |                 ('weekday', 'Weekday', 'Returns the day of the week of this Date (0-6 range, where 0 is Sunday) in the local timezone.'), | 
					
						
							|  |  |  |                 ('day', 'Day', 'Returns the day of this Date (1-31 range) in the local timezone.'), | 
					
						
							|  |  |  |                 ('month', 'Month', 'Returns the month of this Date (0-11 range) in the local timezone. Note that the month number is zero-based.'), | 
					
						
							|  |  |  |                 ('year', 'Year', 'Returns the full year of this Date (4 digits) in the local timezone.'), | 
					
						
							|  |  |  |                 ('hours', 'Hours', 'Returns the hours of this Date (0-23 range) in the local timezone.'), | 
					
						
							|  |  |  |                 ('minutes', 'Minutes', 'Returns the minutes of this Date (0-59 range) in the local timezone.'), | 
					
						
							|  |  |  |                 ('seconds', 'Seconds', 'Returns the seconds of this Date (0-59 range) in the local timezone.'), | 
					
						
							|  |  |  |                 ('all', 'All', 'Get all of the individual separated date and time properties'), | 
					
						
							|  |  |  |                 ('formatted', 'Formatted', 'Format the current system date and time')], | 
					
						
							|  |  |  |         name='',  | 
					
						
							|  |  |  |         default='all', | 
					
						
							|  |  |  |         set=set_enum,  | 
					
						
							|  |  |  |         get=get_enum) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-04-06 10:25:01 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     def __init__(self, *args, **kwargs): | 
					
						
							|  |  |  |         super(GetDateTimeNode, self).__init__(*args, **kwargs) | 
					
						
							| 
									
										
										
										
											2025-01-22 16:18:30 +01:00
										 |  |  |         array_nodes[str(id(self))] = self | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def lnx_init(self, context): | 
					
						
							|  |  |  |         self.add_input('LnxNodeSocketAction', 'In') | 
					
						
							|  |  |  |         self.add_output('LnxNodeSocketAction', 'Out') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Timestamp') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Timezone Offset') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Weekday') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Day') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Month') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Year') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Hours') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Minutes') | 
					
						
							|  |  |  |         self.add_output('LnxIntSocket', 'Seconds') | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def draw_buttons(self, context, layout): | 
					
						
							|  |  |  |         layout.prop(self, 'property0') | 
					
						
							|  |  |  | 
 |