44from NodeGraphQt import QtCore
55import random
66import copy
7-
7+ import time
88
99def rand_color (seed_type ):
1010 seed = id (seed_type )
@@ -35,6 +35,9 @@ def __init__(self, defaultInputType=None, defaultOutputType=None):
3535 self .defaultInputType = defaultInputType
3636 self .defaultOutputType = defaultOutputType
3737
38+ self ._cookTime = 0.0
39+ self ._toolTip = self ._setup_tool_tip ()
40+
3841 @property
3942 def autoCook (self ):
4043 return self ._autoCook
@@ -51,6 +54,15 @@ def autoCook(self, mode):
5154 self .defaultColor = self .get_property ("color" )
5255 self .set_property ('color' , self .stopCookColor )
5356
57+ @property
58+ def cookTime (self ):
59+ return self ._cookTime
60+
61+ @autoCook .setter
62+ def cookTime (self , time ):
63+ self ._cookTime = time
64+ self ._update_tool_tip ()
65+
5466 def cookNextNode (self ):
5567 for nodeList in self .connected_output_nodes ().values ():
5668 for n in nodeList :
@@ -80,6 +92,11 @@ def getInputData(self, port):
8092 data = from_port .node ().get_property (from_port .name ())
8193 return copy .deepcopy (data )
8294
95+ def when_disabled (self ):
96+ num = len (self .input_ports ())
97+ for index , out_port in enumerate (self .output_ports ()):
98+ self .set_property (out_port .name (), self .getInputData (index % num ))
99+
83100 def cook (self , forceCook = False ):
84101 if not self ._autoCook and forceCook is not True :
85102 return
@@ -88,18 +105,20 @@ def cook(self, forceCook=False):
88105 self ._autoCook = False
89106
90107 if self .disabled ():
91- num = len (self .input_ports ())
92- for index , out_port in enumerate (self .output_ports ()):
93- self .set_property (out_port .name (), self .getInputData (index % num ))
108+ self ._autoCook = _tmp
109+ self .when_disabled ()
94110 self .cookNextNode ()
95111 return
96112
97113 if not self .needCook :
114+ self ._autoCook = _tmp
98115 return
99116
100117 if self .error ():
101118 self ._close_error ()
102119
120+ _start_time = time .time ()
121+
103122 try :
104123 self .run ()
105124 except Exception as error :
@@ -109,6 +128,8 @@ def cook(self, forceCook=False):
109128 if self .error ():
110129 return
111130
131+ self .cookTime = time .time () - _start_time
132+
112133 self .cooked .emit ()
113134 self .cookNextNode ()
114135
@@ -206,18 +227,30 @@ def add_output(self, name='output', data_type=None, multi_output=True, display_n
206227 def _close_error (self ):
207228 self ._error = False
208229 self .set_property ('color' , self .defaultColor )
209- self ._view . _tooltip_disable ( False )
230+ self ._update_tool_tip ( )
210231
211232 def _show_error (self , message ):
212233 if not self ._error :
213234 self .defaultColor = self .get_property ("color" )
214235
215236 self ._error = True
216237 self .set_property ('color' , self .errorColor )
217- tooltip = '<b>{}</b>' .format (self .name ())
218- tooltip += ' <font color="red"><br>({})</br></font>' .format (message )
219- tooltip += '<br/>{}<br/>' .format (self ._view .type_ )
220- self ._view .setToolTip (tooltip )
238+ tooltip = '<font color="red"><br>({})</br></font>' .format (message )
239+ self ._update_tool_tip (tooltip )
240+
241+ def _update_tool_tip (self , message = None ):
242+ if message is None :
243+ tooltip = self ._toolTip .format (self ._cookTime )
244+ else :
245+ tooltip = '<b>{}</b>' .format (self .name ())
246+ tooltip += message
247+ tooltip += '<br/>{}<br/>' .format (self ._view .type_ )
248+ self .view .setToolTip (tooltip )
249+ return tooltip
250+
251+ def _setup_tool_tip (self ):
252+ tooltip = '<br> last cook used: {}s</br>'
253+ return self ._update_tool_tip (tooltip )
221254
222255 def error (self , message = None ):
223256 if message is None :
0 commit comments