@@ -60,6 +60,8 @@ def __init__(self, main_window):
6060 self ._ui = Ui_WorkflowWidget ()
6161 self ._ui .setupUi (self )
6262
63+ self ._delayed_errors = []
64+
6365 self ._pluginUpdater = PluginUpdater ()
6466
6567 self ._undoStack = QtGui .QUndoStack (self )
@@ -77,6 +79,10 @@ def __init__(self, main_window):
7779
7880 self ._graphicsScene .setWorkflowScene (self ._workflowManager .scene ())
7981
82+ self ._delay_timer = QtCore .QTimer ()
83+ self ._delay_timer .setSingleShot (True )
84+ self ._delay_timer .setInterval (300 )
85+
8086 self .action_Close = None # Keep a handle to this for modifying the Ui.
8187 self ._action_annotation = self ._main_window .findChild (QtGui .QAction , "actionAnnotation" )
8288 self ._create_menu_items ()
@@ -97,6 +103,7 @@ def _make_connections(self):
97103 self ._graphicsScene .selectionChanged .connect (self ._ui .graphicsView .selectionChanged )
98104 self ._ui .executeButton .clicked .connect (self .executeWorkflow )
99105 self ._undoStack .indexChanged .connect (self .undoStackIndexChanged )
106+ self ._delay_timer .timeout .connect (self ._raise_delayed_errors )
100107
101108 def model (self ):
102109 return self ._main_window .model ()
@@ -154,12 +161,26 @@ def undoRedoStack(self):
154161
155162 def showEvent (self , * args , ** kwargs ):
156163 self ._update_ui ()
164+ self ._delay_timer .start ()
157165 return QtWidgets .QWidget .showEvent (self , * args , ** kwargs )
158166
159167 def hideEvent (self , * args , ** kwargs ):
160168 self ._update_ui ()
161169 return QtWidgets .QWidget .hideEvent (self , * args , ** kwargs )
162170
171+ @handle_runtime_error
172+ def _raise_delayed_error (self , error ):
173+ raise error
174+
175+ def _raise_delayed_errors (self ):
176+ for error in self ._delayed_errors :
177+ self ._raise_delayed_error (error )
178+
179+ self ._delayed_errors = []
180+
181+ def add_delayed_error (self , error ):
182+ self ._delayed_errors .append (error )
183+
163184 @handle_runtime_error
164185 def _abort_execution (self ):
165186 self ._main_window .abort_execution ()
0 commit comments