@@ -147,6 +147,13 @@ def __init__(self, parent, parent_signal, chart_params, from_gen, to_gen):
147147
148148 # Condition variable used to check when the experiment has been stopped or cancelled
149149 self ._experiment_condition = ExperimentCondition ()
150+ self ._simulation_has_finished = False
151+
152+ def closeEvent (self , event ):
153+ logger .debug ('[EXPERIMENT_IN_PROGRESS] [CLOSE_DIALOG] - Executing overriden closeEvent function' )
154+ if not self ._simulation_has_finished :
155+ if not self .on_cancel_button_clicked ():
156+ event .ignore ()
150157
151158 def add_experiment_data (self , amount_gens , indivs_per_gen ):
152159 self ._amount_gens = amount_gens
@@ -167,9 +174,14 @@ def on_cancel_button_clicked(self):
167174 QMessageBox .No )
168175
169176 if response == QMessageBox .Yes :
177+
170178 self ._experiment_condition .cancel_experiment ()
179+ # Set the MainWindow to invisible to not see the it after press 'Yes'
180+ self .setVisible (False )
181+ return True
171182 else :
172183 self ._experiment_condition .continue_experiment ()
184+ return False
173185
174186 def _update_dialog (self , indivs_per_gen_counter , total_indivs_counter , gen_counter , cost ):
175187 logger .debug ('{0} [UPDATE_EXP_IN_PROGRESS] - Executing update_dialog function' .format (self ._log_prefix ))
@@ -192,6 +204,8 @@ def _simulation_finished(self):
192204 logger .debug ('{0} [SIM_FINISHED] - Executing _simulation_finished function' .format (self ._log_prefix ))
193205 self ._parent_signal .emit (self ._experiment_condition .experiment_cancelled (),
194206 self ._experiment_condition .experiment_failure ())
207+ self ._simulation_has_finished = True
208+ self .close ()
195209
196210 def _update_current_gen_experiment (self , indiv_index , cost ):
197211 if cost > self ._chart_params ["max_cost" ]:
@@ -249,19 +263,20 @@ def _create_new_chart(self):
249263 def _board_setup_failure (self , error ):
250264 logger .debug ('{0} [SIM_FINISHED] - Board setup failure: {1}' .format (self ._log_prefix , error ))
251265 selection = QMessageBox .critical (self , "Board Setup error" ,
252- error ,
253- QMessageBox .Ok )
266+ error ,
267+ QMessageBox .Ok )
254268 self ._experiment_condition .cancel_experiment ()
255269 self ._simulation_finished ()
256270
257271 def _board_io_error (self , error ):
258272 logger .debug ('{0} [SIM_FINISHED] - Board IO error: {1}' .format (self ._log_prefix , error ))
259273 selection = QMessageBox .critical (self , "Board IO error" ,
260- error ,
261- QMessageBox .Ok )
274+ error ,
275+ QMessageBox .Ok )
262276 self ._experiment_condition .cancel_experiment ()
263277 self ._simulation_finished ()
264278
279+
265280class ExperimentInProgress (Thread ):
266281
267282 def __init__ (self , mlc_local , experiment_name ,
@@ -362,8 +377,6 @@ def simulation_started(self):
362377 def simulation_finished (self ):
363378 logger .debug ('{0} [SIM_FINISHED] - Executing simulation_finished function' .format (self ._log_prefix ))
364379 self ._dialog .simulation_finished .emit ()
365-
366- def close_window (self ):
367380 self ._dialog .close ()
368381
369382 def _check_if_project_stopped_or_cancelled (self ):
0 commit comments