From 78e763c05c56ff0d11752739612933011fdf2e2e Mon Sep 17 00:00:00 2001 From: Nicole Rappe Date: Wed, 12 Feb 2025 00:00:47 -0700 Subject: [PATCH] asdf --- .../character_status_node.cpython-312.pyc | Bin 5562 -> 6596 bytes Nodes/__pycache__/data_node.cpython-312.pyc | Bin 5636 -> 4868 bytes Nodes/data_node.py | 88 +++++------------- 3 files changed, 25 insertions(+), 63 deletions(-) diff --git a/Nodes/__pycache__/character_status_node.cpython-312.pyc b/Nodes/__pycache__/character_status_node.cpython-312.pyc index eebb7f8b903bfdfca8d4e784dd4d8b24092e3f6a..65cfd02730a4d269521027c2e4b262200b9719f9 100644 GIT binary patch delta 1694 zcmbtUOH3PA6n)P#V{C(ec!(!9ADi072FFoilBPCI3$^*wg$4mCiKrsiGi{87ZOshf zBO7R&1(9fLYpOz5$)XD)Dus#-Z8xbD7F9R6HnBBD?WX&ZhE!QpRo~c{n5-)GNj~p$ z&%N)A-nss+A)#mP+8%5 z;T=_*jwWt_Ycl z^n-l5IHP-k(50)cU_Y5XuQNlv@P*C_4M=n&j_z!b7K?KR-dL6a0If^PD&inO z6n!P~e5UmkRS?V>{tM?Nz*Cic8(`Z~SXEZ25#3-8Bxu%;TSg+<*%b{SR@i`G{%d{ z;B16R@X>fouo*%cDT8ZAuet;d>KcTUp=B|rZ7&*IR#Taju$aaV<$!EnqrVE|4X%A> z$9mv?|Goar(d`R4cX!U&lMbwgGNHS8mbCw`sLQ=RdVl=h_$D*BJ)S$$n{)LYl_s*J zqexP#gPFnI)YM>>BePw$%i+oO51=a}5LNA?Rg(m!ECANf&$ z3f6*$<|YYW(IeccRR;ao4%rmEi0xb?&^mJDZbS#*xPMIObXBre>G&i}Vp2c(0^r>k z028QtQZOY$RN^E}+9hGdg~&}92UkoQJq7s1BaQCzVq1#T3Cyk6Ri^ zf`%1mp)5<1m@GGHg-~Y6&}B!h48e*Q2P+92%*kBXe4om4G)9;h%~|*xjHT=s+7h`D zX2ZyXtOePNN3pmi5|1s$%D#-nX@>J0r;Bwg6Jeq^nUcGPTs0*JibRxWrZ`a^pXL+O zyr@M5%K6t5ahB&;sd3rU5=JG&h6Kd>kE6v z%SFmjpuAbiyBXZ>+@oH9Tm#x(MbLPb^`N_5O5tO2K*o*r8gxQs?Pls9=m@4`$G0y(K(( zp|J4g30zBy571Mz3G$x{4*OhxM^=kqJD)G%c+PcCE; z;Y(p#4RuKkLly^6NSKq|2B;jWKzOo(05=O*WJWF=TOr zESbzE$T#^1xA0_tW-hi$A)p0dVP%2Uj6lnQfRUk6NSUF855i+$P+=%iuVsd*vqw@_ zA_!BHB3Q!=^9>_IBtwc&Epr`nr4WQJXDnx^V2)%cXVetlEG^{8IJs5Wh>>&h4q>Iq zABBYlIbAD~QwvHm^Yd=878GUXl}uI<@#b>@8eaSiNHj2f;NhQKDqP;j8v-KJc_;E-kaM^q;K&K$0WF!zJ2^wtT15`%wkBs`XAOqKVuB!2gVRNV`LLm^ zi!k#MVOAhplVftTgy-ao650v|Am2y;i61QtH$?Rs{B8&+HF$nu;bWEirXb4dG+9Y9 z!#W-)4~m6iO(5}snURt4BMS#3%U2NwM#cLKGPfD{KeNa&N_=r()MRvGoT2fR0YrmS FH~TJ5&0wV)%fX9xzzPVY>B zSYbsaq$U*=pw$XXRi%7_*bhGYu|NCWpA4~UcSI$mezjjTp%tP(J!f8?fPs~kYw66n z_Z;7Q?m6e4$6rFB76PO9)Ymg3K|=n46KC)?vauVGdqgHO&5>D}qLlc^6p?*5iR@SC zL%+qB@-1*l{+~EWQbRbIR+Z_3tYj>z1%38p;{qVRgH08ZqB2SOWSa8Jz7)4aE>PKj zQ%LbLcax+7a;wbWq^Tx305d^u0@y4I09)i{fI+zhpeP3chJaTD-c~sTv$iF2ji$mM zlVqDAOr*6m%2Mpe7KUcB+Qs?Lhw|A>A*T$x z%>gI3Ie7gm3$VVWK6fzL@0|BX@+Z&P3nbY*ZSbe_bMu-JI6JT5m%ozE%_|1~EAxZ) zlO&@#Ez5x8MlFaItW8@H$8Bs{`)oQt zpUzn`Ny(=_&ndDYsEQ`#)3b^p&Hy&Y3UGq9kn|axs^l&h&61SKrBzjuRJ2L##>?Fo z4xjruD_l}Cnsldth!ZveT6?&PH+JB+$JU8jrm zw*$>&kzR6L(&9mQ$$7)|CEU?5J!i*(*A+%2rktVM>Fg0)~| zHQ4*i=MRn3S~yw_59r~6YIs-=4?p6ndr#|oPglY}eZ~{9@5S=~Y42Jm6j+~xJ60n{ z|D3Ld$Mo>n|DO4A@uk`UCw$d^lzh`X9`%3Ai{lahw-FxjjMtzXaG7rLdq7OLfbXk= z9RTAZ*DJ&0EA(?2IRilaJBCgRNn1Jw2>b< zs$d5feQ%{Fz~hMI`YI^4QBHJo)Fn6kz}4;H&6o@19p`;0bKmp#eQKP!1*Eaop3l98nQRtS9e2C%Ca2!{RV`)020eD`x!%bov2h z`+=MN7{I20Z2X{*x9c+3s>P_Q^Vf+#fgLtl0f6GMJnGbi&Wf<}J&4IhQNjZVUKg{& zl|;^}bxC)z<;!PV1$N>rUx^WA@o5~mUAOuja_JJ3N3^i`O;slK0ChBE|@-g?W}y%$Q{5aunGOOd?YtI9K^6=)h^u1mDSFnvN-ICBNZ_Y zwM#f@c`UwlXSk`p3@dMX_nQhrANwUF&jxyTq63?FJAHzjheGMPf6?E_GR`j7In6C7 z7dc4Yw$v)U6LpFgWb&jHZieHLYpP zp<^q+K0tsk(P(vFo0VcbbNsuC`U7LyZGvfkPj=Z<&!Pb8uK_@i^CpzP1tX;+)##`m z9W6%>)_V6;dynb8$Nt)T;!bO=XSmw4U+>w!)-!si^~u)G(((JpD_alO+Iy?*!+JY( z5S8|ke>ai7F$%@p&O=K_OdFeVCAkH=YHWs~t8S5`*@8TuLtK=k-$3hZQ(B>wm7%cC zUdSp8`|s(q6O+>P_?bzw=Vg5$vRRw5A0cLj{DX)cL2w+w7y`VXsQ@EnH`y5_my;x@ zY|ZK$jWcF;Q)b6+0(2ww6o3~uA>|IQgK|ckve*!;{P-A6RkQYU_lfmQs$h fkAaR7s^|dFY*G4m5_`^lNa^U(wf_+On!EoWc}McW literal 5636 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 diff --git a/Nodes/data_node.py b/Nodes/data_node.py index 5828d5b..f33bdeb 100644 --- a/Nodes/data_node.py +++ b/Nodes/data_node.py @@ -1,20 +1,3 @@ -#!/usr/bin/env python3 - -""" -Data Node: - - Input: Accepts a value (string, integer, or float) from an input port. - - Output: Outputs the current value, either from the input port or set manually via a text box. - -Behavior: -- If both input and output are connected: - - Acts as a passthrough, displaying the input value and transmitting it to the output. - - Manual input is disabled. -- If only the output is connected: - - Allows manual value entry, which is sent to the output. -- If only the input is connected: - - Displays the input value but does not transmit it further. -""" - from NodeGraphQt import BaseNode class DataNode(BaseNode): @@ -23,91 +6,70 @@ class DataNode(BaseNode): def __init__(self): super(DataNode, self).__init__() - # Add input and output ports. self.add_input('Input') self.add_output('Output') - # Add a text input widget for manual entry. self.add_text_input('value', 'Value', text='') - # Initialize the value from the widget property. - self.process_widget_event() - self.set_name(f"Data Node: {self.value}") + self.manual_input_enabled = True + self.set_name(f"Data Node: {self.get_property('value')}") def post_create(self): - """ - Called after the node's widget is fully created. - Connect the text input widget's textChanged signal to process_widget_event. - """ text_widget = self.get_widget('value') if text_widget is not None: try: - # Connect the textChanged signal if available. text_widget.textChanged.connect(self.process_widget_event) except Exception as e: print("Error connecting textChanged signal:", e) def process_widget_event(self, event=None): - """ - Reads the current text from the node's property and updates the node's internal value. - """ - current_text = self.get_property('value') - self.value = current_text - self.set_name(f"Data Node: {self.value}") + if self.manual_input_enabled: + current_text = self.get_property('value') + self.set_name(f"Data Node: {current_text}") + self.transmit_data(current_text) def property_changed(self, property_name): - """ - Called when a node property changes. If the 'value' property changes, - update the internal value. - """ if property_name == 'value': self.process_widget_event() def update_stream(self): - """ - Updates the node's behavior based on the connection states. - """ input_port = self.input(0) output_port = self.output(0) if input_port.connected_ports() and output_port.connected_ports(): - # Both input and output are connected; act as passthrough. - self.set_property('value', '') + self.manual_input_enabled = False self.get_widget('value').setEnabled(False) - input_value = input_port.connected_ports()[0].node().get_property('value') - self.set_property('value', input_value) - output_port.send_data(input_value) elif output_port.connected_ports(): - # Only output is connected; allow manual input. + self.manual_input_enabled = True self.get_widget('value').setEnabled(True) - output_port.send_data(self.get_property('value')) + self.transmit_data(self.get_property('value')) elif input_port.connected_ports(): - # Only input is connected; display input value. + self.manual_input_enabled = False self.get_widget('value').setEnabled(False) - input_value = input_port.connected_ports()[0].node().get_property('value') - self.set_property('value', input_value) else: - # Neither input nor output is connected; allow manual input. + self.manual_input_enabled = True self.get_widget('value').setEnabled(True) def on_input_connected(self, input_port, output_port): - """ - Called when an input port is connected. - """ self.update_stream() def on_input_disconnected(self, input_port, output_port): - """ - Called when an input port is disconnected. - """ self.update_stream() def on_output_connected(self, output_port, input_port): - """ - Called when an output port is connected. - """ self.update_stream() def on_output_disconnected(self, output_port, input_port): - """ - Called when an output port is disconnected. - """ self.update_stream() + + def receive_data(self, data, source_port_name=None): + if not self.manual_input_enabled: + self.set_property('value', data) + self.set_name(f"Data Node: {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)