diff --git a/dangerzone/gui/logic.py b/dangerzone/gui/logic.py index d13c227..c4be210 100644 --- a/dangerzone/gui/logic.py +++ b/dangerzone/gui/logic.py @@ -107,16 +107,16 @@ class DangerzoneGui(DangerzoneCore): class Alert(QtWidgets.QDialog): def __init__( self, - gui_common: DangerzoneGui, + dangerzone: DangerzoneGui, message: str, ok_text: str = "Ok", extra_button_text: str = None, ) -> None: super(Alert, self).__init__() - self.gui_common = gui_common + self.dangerzone = dangerzone self.setWindowTitle("dangerzone") - self.setWindowIcon(self.gui_common.get_window_icon()) + self.setWindowIcon(self.dangerzone.get_window_icon()) self.setModal(True) flags = ( diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index d86e753..5c55766 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -14,7 +14,7 @@ from .. import container from ..container import convert from ..document import SAFE_EXTENSION, Document from ..util import get_resource_path, get_subprocess_startupinfo -from .logic import DangerzoneGui +from .logic import Alert, DangerzoneGui log = logging.getLogger(__name__) @@ -78,7 +78,21 @@ class MainWindow(QtWidgets.QMainWindow): self.content_widget.show() def closeEvent(self, e: QtGui.QCloseEvent) -> None: - e.accept() + alert_widget = Alert( + self.dangerzone, + message="Some documents are still being converted.\n Are you sure you want to quit?", + ok_text="Abort conversions", + ) + converting_docs = self.dangerzone.get_converting_documents() + if not converting_docs: + e.accept() + else: + accept_exit = alert_widget.exec_() + if not accept_exit: + e.ignore() + return + else: + e.accept() if platform.system() != "Darwin": # in MacOS applications only quit when the user diff --git a/dangerzone/logic.py b/dangerzone/logic.py index 4fd6b06..cb17210 100644 --- a/dangerzone/logic.py +++ b/dangerzone/logic.py @@ -69,3 +69,6 @@ class DangerzoneCore(object): def get_failed_documents(self) -> List[Document]: return [doc for doc in self.documents if doc.is_failed()] + + def get_converting_documents(self) -> List[Document]: + return [doc for doc in self.documents if doc.is_converting()]