#!/usr/bin/env python3 """ Standardized Data Node: - Accepts and transmits values consistently. - Updates its value based on a global update timer. """ from OdenGraphQt import BaseNode from Qt import QtCore class DataNode(BaseNode): __identifier__ = 'bunny-lab.io.data_node' NODE_NAME = 'Data Node' def __init__(self): super(DataNode, self).__init__() self.add_input('Input') self.add_output('Output') self.add_text_input('value', 'Value', text='') self.process_widget_event() self.set_name("Data Node") # Removed self-contained update timer; global timer now drives updates. def post_create(self): text_widget = self.get_widget('value') if text_widget is not None: try: # Removed textChanged signal connection; global timer will call process_input. pass except Exception as e: print("Error connecting textChanged signal:", e) def process_widget_event(self, event=None): current_text = self.get_property('value') self.value = current_text self.transmit_data(current_text) def property_changed(self, property_name): if property_name == 'value': # Immediate update removed; relying on global timer. pass def process_input(self): input_port = self.input(0) output_port = self.output(0) if input_port.connected_ports(): input_value = input_port.connected_ports()[0].node().get_property('value') self.set_property('value', input_value) self.transmit_data(input_value) elif output_port.connected_ports(): self.transmit_data(self.get_property('value')) def on_input_connected(self, input_port, output_port): # Removed immediate update; global timer handles updates. pass def on_input_disconnected(self, input_port, output_port): # Removed immediate update; global timer handles updates. pass def receive_data(self, data, source_port_name=None): self.set_property('value', str(data)) self.transmit_data(data) def transmit_data(self, data): output_port = self.output(0) if output_port and output_port.connected_ports(): for connected_port in output_port.connected_ports(): connected_node = connected_port.node() if hasattr(connected_node, 'receive_data'): connected_node.receive_data(data, source_port_name="Output")