def cancel_analyses(self, *_) -> None: if hasattr(self, 'cancel_dialog'): return self.cancel_dialog = YesNoDialog( parent=self.host, message_format='Confirm cancel analysis?', ) def hdl_response(dialog: Gtk.Widget, response: Gtk.ResponseType) -> None: del self.cancel_dialog dialog.destroy() self.progress_helper.disconnect(status_handler_id) if response == Gtk.ResponseType.YES: self.session.cancel_analyses() def hdl_progress_status(*_) -> None: if (self.progress_helper.status is ConanAnalysisProgressHelper.Status.FINISHED or self.progress_helper.status is ConanAnalysisProgressHelper.Status.CANCELLED): self.cancel_dialog.close() # Close dialog if analysis finishes or cancels before user responds. status_handler_id = self.progress_helper.connect( 'notify::status', hdl_progress_status) self.cancel_dialog.connect('response', hdl_response) self.cancel_dialog.show()
def show_confirm_discard_dialog(self) -> None: if self._confirm_discard_dialog is not None: return self._confirm_discard_dialog = YesNoDialog( message_format='Discard unsaved results?', parent=self._window, ) self._confirm_discard_dialog.connect('delete-event', lambda *_: True) self._confirm_discard_dialog.connect( 'response', self._hdl_confirm_discard_dialog_response) self._confirm_discard_dialog.show()
def show_confirm_overwrite_dialog(self, path: Path) -> None: if self._confirm_overwrite_dialog is not None: return self._confirm_overwrite_dialog = YesNoDialog(message_format=( "This save location '{!s}' already exists, do you want to clear its contents?" .format(path)), parent=self._window) self._confirm_overwrite_dialog.connect( 'response', self._hdl_confirm_overwrite_dialog_response) self._confirm_overwrite_dialog.connect('delete-event', lambda *_: True) self._confirm_overwrite_dialog.show()
def show_confirm_cancel_dialog(self) -> None: if self._confirm_cancel_dialog is not None: return self._confirm_cancel_dialog = YesNoDialog( parent=self._get_parent_window(), message_format='Confirm cancel analysis?', ) self._confirm_cancel_dialog.connect('delete-event', lambda *_: True) self._confirm_cancel_dialog.connect( 'response', self._hdl_confirm_cancel_dialog_response) self._confirm_cancel_dialog.show()
def close(self, discard_unsaved: bool = False) -> None: if hasattr(self, 'confirm_discard_dialog'): return if discard_unsaved or self.session.safe_to_discard(): self.session.quit() self.host.destroy() else: self.confirm_discard_dialog = YesNoDialog( message_format='Discard unsaved results?', parent=self.host, ) def hdl_response(dialog: Gtk.Dialog, response: Gtk.ResponseType) -> None: del self.confirm_discard_dialog dialog.destroy() if response == Gtk.ResponseType.YES: self.close(True) self.confirm_discard_dialog.connect('response', hdl_response) self.confirm_discard_dialog.show()