示例#1
0
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()
示例#2
0
 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()