Add dummy conversion to GUI

This commit is contained in:
deeplow 2023-01-03 14:41:41 +00:00
parent da0cb6b3c5
commit a339eff648
No known key found for this signature in database
GPG key ID: 577982871529A52A
3 changed files with 32 additions and 9 deletions

View file

@ -50,6 +50,9 @@ class Application(QtWidgets.QApplication):
@click.command() @click.command()
@click.option(
"--unsafe-dummy-conversion", "dummy_conversion", flag_value=True, hidden=True
)
@click.argument( @click.argument(
"filenames", "filenames",
required=False, required=False,
@ -59,7 +62,7 @@ class Application(QtWidgets.QApplication):
) )
@click.version_option(version=get_version(), message="%(version)s") @click.version_option(version=get_version(), message="%(version)s")
@errors.handle_document_errors @errors.handle_document_errors
def gui_main(filenames: Optional[List[str]]) -> bool: def gui_main(dummy_conversion: bool, filenames: Optional[List[str]]) -> bool:
setup_logging() setup_logging()
if platform.system() == "Darwin": if platform.system() == "Darwin":
@ -77,7 +80,12 @@ def gui_main(filenames: Optional[List[str]]) -> bool:
app = Application() app = Application()
# Common objects # Common objects
dangerzone = DangerzoneGui(app) if getattr(sys, "dangerzone_dev", False) and dummy_conversion:
dummy = Dummy()
dangerzone = DangerzoneGui(app, isolation_provider=dummy)
else:
container = Container()
dangerzone = DangerzoneGui(app, isolation_provider=container)
# Allow Ctrl-C to smoothly quit the program instead of throwing an exception # Allow Ctrl-C to smoothly quit the program instead of throwing an exception
signal.signal(signal.SIGINT, signal.SIG_DFL) signal.signal(signal.SIGINT, signal.SIG_DFL)

View file

@ -13,7 +13,7 @@ from PySide2 import QtCore, QtGui, QtWidgets
if platform.system() == "Linux": if platform.system() == "Linux":
from xdg.DesktopEntry import DesktopEntry from xdg.DesktopEntry import DesktopEntry
from ..isolation_provider.container import Container from ..isolation_provider.base import IsolationProvider
from ..logic import DangerzoneCore from ..logic import DangerzoneCore
from ..settings import Settings from ..settings import Settings
from ..util import get_resource_path from ..util import get_resource_path
@ -26,8 +26,10 @@ class DangerzoneGui(DangerzoneCore):
Singleton of shared state / functionality for the GUI and core app logic Singleton of shared state / functionality for the GUI and core app logic
""" """
def __init__(self, app: QtWidgets.QApplication) -> None: def __init__(
super().__init__(isolation_provider=Container()) self, app: QtWidgets.QApplication, isolation_provider: IsolationProvider
) -> None:
super().__init__(isolation_provider)
# Qt app # Qt app
self.app = app self.app = app

View file

@ -57,9 +57,15 @@ class MainWindow(QtWidgets.QMainWindow):
header_layout.addWidget(header_version_label) header_layout.addWidget(header_version_label)
header_layout.addStretch() header_layout.addStretch()
# Waiting widget, replaces content widget while container runtime isn't available if isinstance(self.dangerzone.isolation_provider, Container):
self.waiting_widget = WaitingWidget(self.dangerzone) # Waiting widget replaces content widget while container runtime isn't available
self.waiting_widget.finished.connect(self.waiting_finished) self.waiting_widget: WaitingWidget = WaitingWidgetContainer(self.dangerzone)
self.waiting_widget.finished.connect(self.waiting_finished)
elif isinstance(self.dangerzone.isolation_provider, Dummy):
# Don't wait with dummy converter
self.waiting_widget = WaitingWidget()
self.dangerzone.is_waiting_finished = True
# Content widget, contains all the window content except waiting widget # Content widget, contains all the window content except waiting widget
self.content_widget = ContentWidget(self.dangerzone) self.content_widget = ContentWidget(self.dangerzone)
@ -122,6 +128,13 @@ class InstallContainerThread(QtCore.QThread):
class WaitingWidget(QtWidgets.QWidget): class WaitingWidget(QtWidgets.QWidget):
finished = QtCore.Signal()
def __init__(self) -> None:
super(WaitingWidget, self).__init__()
class WaitingWidgetContainer(WaitingWidget):
# These are the possible states that the WaitingWidget can show. # These are the possible states that the WaitingWidget can show.
# #
# Windows and macOS states: # Windows and macOS states:
@ -134,7 +147,7 @@ class WaitingWidget(QtWidgets.QWidget):
finished = QtCore.Signal() finished = QtCore.Signal()
def __init__(self, dangerzone: DangerzoneGui) -> None: def __init__(self, dangerzone: DangerzoneGui) -> None:
super(WaitingWidget, self).__init__() super(WaitingWidgetContainer, self).__init__()
self.dangerzone = dangerzone self.dangerzone = dangerzone
self.label = QtWidgets.QLabel() self.label = QtWidgets.QLabel()