diff --git a/dangerzone/gui/__init__.py b/dangerzone/gui/__init__.py
index b18aed2..f92d419 100644
--- a/dangerzone/gui/__init__.py
+++ b/dangerzone/gui/__init__.py
@@ -12,7 +12,6 @@ from PySide2 import QtCore, QtGui, QtWidgets
from .. import args, errors
from ..document import Document
-from ..logic import DangerzoneCore
from .logic import DangerzoneGui
from .main_window import MainWindow
from .systray import SysTray
@@ -71,14 +70,13 @@ def gui_main(filename: Optional[str]) -> bool:
app = app_wrapper.app
# Common objects
- dangerzone = DangerzoneCore()
- gui_common = DangerzoneGui(app, dangerzone)
+ dangerzone = DangerzoneGui(app)
# Allow Ctrl-C to smoothly quit the program instead of throwing an exception
signal.signal(signal.SIGINT, signal.SIG_DFL)
# Create the system tray
- systray = SysTray(dangerzone, gui_common, app, app_wrapper)
+ systray = SysTray(dangerzone, app, app_wrapper)
closed_windows: Dict[str, MainWindow] = {}
windows: Dict[str, MainWindow] = {}
@@ -91,7 +89,7 @@ def gui_main(filename: Optional[str]) -> bool:
def new_window(input_filename: Optional[str] = None) -> None:
document = Document(input_filename)
window_id = uuid.uuid4().hex
- window = MainWindow(dangerzone, gui_common, window_id, document)
+ window = MainWindow(dangerzone, window_id, document)
window.delete_window.connect(delete_window)
windows[window_id] = window
diff --git a/dangerzone/gui/logic.py b/dangerzone/gui/logic.py
index 856e8fd..9498cf1 100644
--- a/dangerzone/gui/logic.py
+++ b/dangerzone/gui/logic.py
@@ -24,18 +24,17 @@ from ..util import get_resource_path
log = logging.getLogger(__name__)
-class DangerzoneGui(object):
+class DangerzoneGui(DangerzoneCore):
"""
- The DangerzoneGui class is a singleton of shared functionality for the GUI
+ Singleton of shared state / functionality for the GUI and core app logic
"""
- def __init__(self, app: QtWidgets.QApplication, dangerzone: DangerzoneCore) -> None:
+ def __init__(self, app: QtWidgets.QApplication) -> None:
+ super().__init__()
+
# Qt app
self.app = app
- # Global common singleton
- self.dangerzone = dangerzone
-
# Preload font
self.fixed_font = QtGui.QFontDatabase.systemFont(QtGui.QFontDatabase.FixedFont)
@@ -64,9 +63,7 @@ class DangerzoneGui(object):
elif platform.system() == "Linux":
# Get the PDF reader command
- args = shlex.split(
- self.pdf_viewers[self.dangerzone.settings.get("open_app")]
- )
+ args = shlex.split(self.pdf_viewers[self.settings.get("open_app")])
# %f, %F, %u, and %U are filenames or URLS -- so replace with the file to open
for i in range(len(args)):
if (
@@ -115,18 +112,16 @@ class DangerzoneGui(object):
class Alert(QtWidgets.QDialog):
def __init__(
self,
- dangerzone_gui: DangerzoneGui,
- dangerzone: DangerzoneCore,
+ gui_common: DangerzoneGui,
message: str,
ok_text: str = "Ok",
extra_button_text: str = None,
) -> None:
super(Alert, self).__init__()
- self.dangerzone = dangerzone
- self.dangerzone_gui = dangerzone_gui
+ self.gui_common = gui_common
self.setWindowTitle("dangerzone")
- self.setWindowIcon(self.dangerzone_gui.get_window_icon())
+ self.setWindowIcon(self.gui_common.get_window_icon())
self.setModal(True)
flags = (
diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py
index def411b..2e2e2d8 100644
--- a/dangerzone/gui/main_window.py
+++ b/dangerzone/gui/main_window.py
@@ -13,7 +13,6 @@ from PySide2 import QtCore, QtGui, QtWidgets
from .. import container
from ..container import convert
from ..document import Document
-from ..logic import DangerzoneCore
from ..util import get_resource_path, get_subprocess_startupinfo
from .logic import DangerzoneGui
@@ -25,19 +24,17 @@ class MainWindow(QtWidgets.QMainWindow):
def __init__(
self,
- dangerzone: DangerzoneCore,
- gui_common: DangerzoneGui,
+ dangerzone: DangerzoneGui,
window_id: str,
document: Document,
) -> None:
super(MainWindow, self).__init__()
self.dangerzone = dangerzone
- self.gui_common = gui_common
self.window_id = window_id
self.document = document
self.setWindowTitle("Dangerzone")
- self.setWindowIcon(self.gui_common.get_window_icon())
+ self.setWindowIcon(self.dangerzone.get_window_icon())
self.setMinimumWidth(600)
self.setMinimumHeight(400)
@@ -48,7 +45,7 @@ class MainWindow(QtWidgets.QMainWindow):
QtGui.QPixmap.fromImage(QtGui.QImage(get_resource_path("icon.png")))
)
header_label = QtWidgets.QLabel("dangerzone")
- header_label.setFont(self.gui_common.fixed_font)
+ header_label.setFont(self.dangerzone.fixed_font)
header_label.setStyleSheet("QLabel { font-weight: bold; font-size: 50px; }")
header_layout = QtWidgets.QHBoxLayout()
header_layout.addStretch()
@@ -58,17 +55,15 @@ class MainWindow(QtWidgets.QMainWindow):
header_layout.addStretch()
# Waiting widget, replaces content widget while container runtime isn't available
- self.waiting_widget = WaitingWidget(self.dangerzone, self.gui_common)
+ self.waiting_widget = WaitingWidget(self.dangerzone)
self.waiting_widget.finished.connect(self.waiting_finished)
# Content widget, contains all the window content except waiting widget
- self.content_widget = ContentWidget(
- self.dangerzone, self.gui_common, self.document
- )
+ self.content_widget = ContentWidget(self.dangerzone, self.document)
self.content_widget.close_window.connect(self.close)
# Only use the waiting widget if container runtime isn't available
- if self.gui_common.is_waiting_finished:
+ if self.dangerzone.is_waiting_finished:
self.waiting_widget.hide()
self.content_widget.show()
else:
@@ -88,7 +83,7 @@ class MainWindow(QtWidgets.QMainWindow):
self.show()
def waiting_finished(self) -> None:
- self.gui_common.is_waiting_finished = True
+ self.dangerzone.is_waiting_finished = True
self.waiting_widget.hide()
self.content_widget.show()
@@ -97,15 +92,14 @@ class MainWindow(QtWidgets.QMainWindow):
self.delete_window.emit(self.window_id)
if platform.system() != "Darwin":
- self.gui_common.app.quit()
+ self.dangerzone.app.quit()
class InstallContainerThread(QtCore.QThread):
finished = QtCore.Signal()
- def __init__(self, dangerzone: DangerzoneCore) -> None:
+ def __init__(self) -> None:
super(InstallContainerThread, self).__init__()
- self.dangerzone = dangerzone
def run(self) -> None:
container.install()
@@ -124,10 +118,9 @@ class WaitingWidget(QtWidgets.QWidget):
# - "install_container"
finished = QtCore.Signal()
- def __init__(self, dangerzone: DangerzoneCore, gui_common: DangerzoneGui) -> None:
+ def __init__(self, dangerzone: DangerzoneGui) -> None:
super(WaitingWidget, self).__init__()
self.dangerzone = dangerzone
- self.gui_common = gui_common
self.label = QtWidgets.QLabel()
self.label.setAlignment(QtCore.Qt.AlignCenter)
@@ -201,7 +194,7 @@ class WaitingWidget(QtWidgets.QWidget):
"Installing the Dangerzone container image.
This might take a few minutes..."
)
self.buttons.hide()
- self.install_container_t = InstallContainerThread(self.dangerzone)
+ self.install_container_t = InstallContainerThread()
self.install_container_t.finished.connect(self.finished)
self.install_container_t.start()
@@ -209,13 +202,10 @@ class WaitingWidget(QtWidgets.QWidget):
class ContentWidget(QtWidgets.QWidget):
close_window = QtCore.Signal()
- def __init__(
- self, dangerzone: DangerzoneCore, gui_common: DangerzoneGui, document: Document
- ) -> None:
+ def __init__(self, dangerzone: DangerzoneGui, document: Document) -> None:
super(ContentWidget, self).__init__()
self.dangerzone = dangerzone
- self.gui_common = gui_common
self.document = document
# Doc selection widget
@@ -223,9 +213,7 @@ class ContentWidget(QtWidgets.QWidget):
self.doc_selection_widget.document_selected.connect(self.document_selected)
# Settings
- self.settings_widget = SettingsWidget(
- self.dangerzone, self.gui_common, self.document
- )
+ self.settings_widget = SettingsWidget(self.dangerzone, self.document)
self.doc_selection_widget.document_selected.connect(
self.settings_widget.document_selected
)
@@ -234,9 +222,7 @@ class ContentWidget(QtWidgets.QWidget):
self.settings_widget.hide()
# Convert
- self.convert_widget = ConvertWidget(
- self.dangerzone, self.gui_common, self.document
- )
+ self.convert_widget = ConvertWidget(self.dangerzone, self.document)
self.convert_widget.close_window.connect(self._close_window)
self.doc_selection_widget.document_selected.connect(
self.convert_widget.document_selected
@@ -308,12 +294,9 @@ class SettingsWidget(QtWidgets.QWidget):
start_clicked = QtCore.Signal()
close_window = QtCore.Signal()
- def __init__(
- self, dangerzone: DangerzoneCore, gui_common: DangerzoneGui, document: Document
- ) -> None:
+ def __init__(self, dangerzone: DangerzoneGui, document: Document) -> None:
super(SettingsWidget, self).__init__()
self.dangerzone = dangerzone
- self.gui_common = gui_common
self.document = document
# Dangerous document label
@@ -358,8 +341,8 @@ class SettingsWidget(QtWidgets.QWidget):
)
self.open_checkbox.clicked.connect(self.update_ui)
self.open_combobox = QtWidgets.QComboBox()
- for k in self.gui_common.pdf_viewers:
- self.open_combobox.addItem(k, self.gui_common.pdf_viewers[k])
+ for k in self.dangerzone.pdf_viewers:
+ self.open_combobox.addItem(k, self.dangerzone.pdf_viewers[k])
if platform.system() == "Darwin" or platform.system() == "Linux":
open_layout = QtWidgets.QHBoxLayout()
@@ -498,7 +481,7 @@ class ConvertThread(QtCore.QThread):
finished = QtCore.Signal(bool)
update = QtCore.Signal(bool, str, int)
- def __init__(self, dangerzone: DangerzoneCore, document: Document) -> None:
+ def __init__(self, dangerzone: DangerzoneGui, document: Document) -> None:
super(ConvertThread, self).__init__()
self.dangerzone = dangerzone
self.document = document
@@ -546,12 +529,9 @@ class ConvertThread(QtCore.QThread):
class ConvertWidget(QtWidgets.QWidget):
close_window = QtCore.Signal()
- def __init__(
- self, dangerzone: DangerzoneCore, gui_common: DangerzoneGui, document: Document
- ) -> None:
+ def __init__(self, dangerzone: DangerzoneGui, document: Document) -> None:
super(ConvertWidget, self).__init__()
self.dangerzone = dangerzone
- self.gui_common = gui_common
self.document = document
self.error = False
@@ -629,11 +609,11 @@ class ConvertWidget(QtWidgets.QWidget):
# Open
if self.dangerzone.settings.get("open"):
- self.gui_common.open_pdf_viewer(self.document.output_filename)
+ self.dangerzone.open_pdf_viewer(self.document.output_filename)
# Quit
if platform.system() == "Darwin":
# In macOS, just close the window
self.close_window.emit()
else:
- self.gui_common.app.quit()
+ self.dangerzone.app.quit()
diff --git a/dangerzone/gui/systray.py b/dangerzone/gui/systray.py
index 1c4850a..cc3d554 100644
--- a/dangerzone/gui/systray.py
+++ b/dangerzone/gui/systray.py
@@ -3,7 +3,6 @@ from typing import TYPE_CHECKING
from PySide2 import QtWidgets
-from ..logic import DangerzoneCore
from .logic import DangerzoneGui
if TYPE_CHECKING:
@@ -13,18 +12,16 @@ if TYPE_CHECKING:
class SysTray(QtWidgets.QSystemTrayIcon):
def __init__(
self,
- dangerzone: DangerzoneCore,
- gui_common: DangerzoneGui,
+ dangerzone: DangerzoneGui,
app: QtWidgets.QApplication,
app_wrapper: "ApplicationWrapper",
) -> None:
super(SysTray, self).__init__()
self.dangerzone = dangerzone
- self.gui_common = gui_common
self.app = app
self.app_wrapper = app_wrapper
- self.setIcon(self.gui_common.get_window_icon())
+ self.setIcon(self.dangerzone.get_window_icon())
menu = QtWidgets.QMenu()
diff --git a/dangerzone/logic.py b/dangerzone/logic.py
index 7f803ae..ec53fae 100644
--- a/dangerzone/logic.py
+++ b/dangerzone/logic.py
@@ -20,7 +20,7 @@ log = logging.getLogger(__name__)
class DangerzoneCore(object):
"""
- The DangerzoneCore class is a singleton of shared functionality throughout the app
+ Singleton of shared state / functionality throughout the app
"""
def __init__(self) -> None: