Skip to content

Commit 35de1f0

Browse files
committed
owtestlearners: Replace use of setBlocking with output invalidation
Allow interruption on input change
1 parent 6ea45b7 commit 35de1f0

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

Orange/widgets/evaluate/owtestlearners.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,7 @@ def set_learner(self, learner, key):
310310
learner : Optional[Orange.base.Learner]
311311
key : Any
312312
"""
313+
self.cancel()
313314
if key in self.learners and learner is None:
314315
# Removed
315316
self._invalidate([key])
@@ -327,6 +328,7 @@ def set_train_data(self, data):
327328
----------
328329
data : Optional[Orange.data.Table]
329330
"""
331+
self.cancel()
330332
self.Information.data_sampled.clear()
331333
self.Error.train_data_empty.clear()
332334
self.Error.class_required.clear()
@@ -390,6 +392,7 @@ def set_test_data(self, data):
390392
----------
391393
data : Optional[Orange.data.Table]
392394
"""
395+
self.cancel()
393396
self.Information.test_data_sampled.clear()
394397
self.Error.test_data_empty.clear()
395398
if data is not None and not data:
@@ -445,11 +448,13 @@ def set_preprocessor(self, preproc):
445448
"""
446449
Set the input preprocessor to apply on the training data.
447450
"""
451+
self.cancel()
448452
self.preprocessor = preproc
449453
self._invalidate()
450454

451455
def handleNewSignals(self):
452456
"""Reimplemented from OWWidget.handleNewSignals."""
457+
self.cancel()
453458
self._update_class_selection()
454459
self.score_table.update_header(self.scorers)
455460
self.update_stats_model()
@@ -814,8 +819,9 @@ def progress_callback(finished):
814819
task.progress_changed.connect(self.setProgressValue)
815820
task.watcher.finished.connect(self.__task_complete)
816821

822+
self.Outputs.evaluations_results.invalidate()
823+
self.Outputs.predictions.invalidate()
817824
self.progressBarInit()
818-
self.setBlocking(True)
819825
self.setStatusMessage("Running")
820826

821827
self.__state = State.Running
@@ -826,7 +832,6 @@ def __task_complete(self, result: 'Future[Results]'):
826832
# handle a completed task
827833
assert self.thread() is QThread.currentThread()
828834
assert self.__task is not None and self.__task.future is result
829-
self.setBlocking(False)
830835
self.progressBarFinished()
831836
self.setStatusMessage("")
832837
assert result.done()
@@ -878,7 +883,6 @@ def cancel(self):
878883
task.cancel()
879884
task.progress_changed.disconnect(self.setProgressValue)
880885
task.watcher.finished.disconnect(self.__task_complete)
881-
# self.setBlocking(False)
882886
self.progressBarFinished()
883887

884888
def onDeleteWidget(self):

0 commit comments

Comments
 (0)