Skip to content

Commit a26daf6

Browse files
committed
owimpute: Use isInvalidated, cancel on new inputs
1 parent 4872138 commit a26daf6

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

Orange/widgets/data/owimpute.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,7 @@ def set_default_method(self, index):
287287
@Inputs.data
288288
@check_sql_input
289289
def set_data(self, data):
290+
self.cancel()
290291
self.closeContext()
291292
self.varmodel[:] = []
292293
self._variable_imputation_state = {} # type: VariableState
@@ -304,6 +305,7 @@ def set_data(self, data):
304305

305306
@Inputs.learner
306307
def set_learner(self, learner):
308+
self.cancel()
307309
self.learner = learner or self.default_learner
308310
imputer = self.create_imputer(Method.Model)
309311
button = self.default_button_group.button(Method.Model)
@@ -380,8 +382,8 @@ def impute_one(method, var, data):
380382
w.doneAll.connect(self.__commit_finish)
381383
w.progressChanged.connect(self.__progress_changed)
382384
self.__task = Task(futures, w)
383-
self.progressBarInit(processEvents=False)
384-
self.setBlocking(True)
385+
self.progressBarInit()
386+
self.setInvalidated(True)
385387

386388
@Slot()
387389
def __commit_finish(self):
@@ -430,7 +432,7 @@ def create_data(attributes, class_vars):
430432
return None
431433

432434
self.__task = None
433-
self.setBlocking(False)
435+
self.setInvalidated(False)
434436
self.progressBarFinished()
435437

436438
attributes = []
@@ -458,18 +460,22 @@ def __progress_changed(self, n, d):
458460
self.progressBarSet(100. * n / d)
459461

460462
def cancel(self):
463+
self.__cancel(wait=False)
464+
465+
def __cancel(self, wait=False):
461466
if self.__task is not None:
462467
task, self.__task = self.__task, None
463468
task.cancel()
464469
task.watcher.doneAll.disconnect(self.__commit_finish)
465470
task.watcher.progressChanged.disconnect(self.__progress_changed)
466-
concurrent.futures.wait(task.futures)
467-
task.watcher.flush()
471+
if wait:
472+
concurrent.futures.wait(task.futures)
473+
task.watcher.flush()
468474
self.progressBarFinished()
469-
self.setBlocking(False)
475+
self.setInvalidated(False)
470476

471477
def onDeleteWidget(self):
472-
self.cancel()
478+
self.__cancel(wait=True)
473479
super().onDeleteWidget()
474480

475481
def send_report(self):

0 commit comments

Comments
 (0)