class StudyActionHandler(ActionHandler): study_updated = QtCore.pyqtSignal(Study) def __init__(self, parent=None): super(StudyActionHandler, self).__init__(parent) self._study_editor_dialog = None self._import_subjects_dialog = None self._create_updated_study_thread = None @QtCore.Slot() def _on_study_dialog_accepted(self): study_editor = self._study_editor_dialog.study_editor self._study_editor_dialog = None self.pb = _create_import_progress_dialog(self.parent()) qt = QtThreadCall() self._create_updated_study_thread = FuncQThread(\ study_editor.create_updated_study, kwargs={'progress_callback': partial(qt.push, self.pb.update_value)}) if study_editor.subjects_editor.has_subjects_to_be_imported(): dialog = ImportSubjectsDialog(study_editor, parent=self.parent()) dialog.ui.accepted.connect( self._on_import_subjects_dialog_accepted) dialog.show() self._import_subjects_dialog = dialog self._create_updated_study_thread.finished.connect(\ self._on_create_updated_study_thread_finished) else: self._create_updated_study_thread.finished.connect(\ self._on_create_updated_study_thread_finished_without_dialog) QtGui.qApp.setOverrideCursor(QtCore.Qt.WaitCursor) self._create_updated_study_thread.start() @QtCore.Slot() def _on_create_updated_study_thread_finished_without_dialog(self): self._on_create_updated_study_thread_finished() self._on_import_subjects_dialog_accepted() QtGui.qApp.restoreOverrideCursor() @QtCore.Slot() def _on_create_updated_study_thread_finished(self): study = self._create_updated_study_thread.res self.study_updated.emit(study) self._create_updated_study_thread = None self.pb.deleteLater() del self.pb QtGui.qApp.restoreOverrideCursor() @QtCore.Slot() def _on_import_subjects_dialog_accepted(self): self._import_subjects_dialog = None self.terminated.emit()
def _on_study_dialog_accepted(self): study_editor = self._study_editor_dialog.study_editor self._study_editor_dialog = None self.pb = _create_import_progress_dialog(self.parent()) qt = QtThreadCall() self._create_updated_study_thread = FuncQThread( study_editor.create_updated_study, kwargs={"progress_callback": partial(qt.push, self.pb.update_value)} ) if study_editor.subjects_editor.has_subjects_to_be_imported(): dialog = ImportSubjectsDialog(study_editor, parent=self.parent()) dialog.ui.accepted.connect(self._on_import_subjects_dialog_accepted) dialog.show() self._import_subjects_dialog = dialog self._create_updated_study_thread.finished.connect(self._on_create_updated_study_thread_finished) else: self._create_updated_study_thread.finished.connect( self._on_create_updated_study_thread_finished_without_dialog ) QtGui.qApp.setOverrideCursor(QtCore.Qt.WaitCursor) self._create_updated_study_thread.start()