@@ -16,14 +16,17 @@ def rand_color(seed_type):
1616
1717
1818class AutoNode (BaseNode ):
19- def __init__ (self ):
19+ def __init__ (self , defaultInputType = None , defaultOutputType = None ):
2020 super (AutoNode , self ).__init__ ()
2121 self .needCook = True
22- self .defaultValue = None
2322 self ._error = False
23+ self .matchTypes = [[float , int ]]
24+ self .errorColor = (200 , 50 , 50 )
2425
2526 self .defaultColor = self .get_property ("color" )
26- self .errorColor = (200 ,50 ,50 )
27+ self .defaultValue = None
28+ self .defaultInputType = defaultInputType
29+ self .defaultOutputType = defaultOutputType
2730
2831 def cookNextNode (self ):
2932 for nodeList in self .connected_output_nodes ().values ():
@@ -93,10 +96,12 @@ def set_disabled(self, mode=False):
9396 if self .input_ports ():
9497 self .cook ()
9598
96- @staticmethod
97- def checkPortType (to_port , from_port ):
99+ def checkPortType (self , to_port , from_port ):
98100 if hasattr (to_port ,"DataType" ) and hasattr (from_port ,"DataType" ):
99101 if to_port .DataType is not from_port .DataType :
102+ for types in self .matchTypes :
103+ if to_port .DataType in types and from_port .DataType in types :
104+ return True
100105 return False
101106
102107 return True
@@ -106,10 +111,6 @@ def set_property(self, name, value):
106111 self .set_port_type (name , type (value ))
107112
108113 def set_port_type (self , port , value_type ):
109-
110- if value_type is int :
111- value_type = float
112-
113114 current_port = None
114115
115116 if type (port ) is Port :
@@ -147,13 +148,17 @@ def add_input(self, name='input', data_type=None, multi_input=False, display_nam
147148 new_port = super (AutoNode , self ).add_input (name , multi_input , display_name , color )
148149 if data_type :
149150 self .set_port_type (new_port , data_type )
151+ elif self .defaultInputType :
152+ self .set_port_type (new_port , self .defaultInputType )
150153 return new_port
151154
152155 def add_output (self , name = 'output' , data_type = None , multi_output = True , display_name = True ,
153156 color = None ):
154157 new_port = super (AutoNode , self ).add_output (name , multi_output , display_name , color )
155158 if data_type :
156159 self .set_port_type (new_port , data_type )
160+ elif self .defaultOutputType :
161+ self .set_port_type (new_port , self .defaultOutputType )
157162 return new_port
158163
159164 def _close_error (self ):
@@ -162,6 +167,10 @@ def _close_error(self):
162167 self ._view ._tooltip_disable (False )
163168
164169 def _show_error (self ,message ):
170+ if not self ._error :
171+ self .defaultColor = self .get_property ("color" )
172+
173+ self ._error = True
165174 self .set_property ('color' , self .errorColor )
166175 tooltip = '<b>{}</b>' .format (self .name ())
167176 tooltip += ' <font color="red"><br>({})</br></font>' .format (message )
@@ -172,5 +181,4 @@ def error(self,message = None):
172181 if message is None :
173182 return self ._error
174183
175- self ._error = True
176184 self ._show_error (message )
0 commit comments