From cb8130042e153ccd5cc1515f462fa1b762070028 Mon Sep 17 00:00:00 2001 From: deeplow Date: Mon, 19 Sep 2022 15:19:53 +0100 Subject: [PATCH] Rename global_common.GlobalCommon class to logic.Dangerzone Rename the `global_common` module and `global_common.GlobalCommon` class to `logic` and `logic.Dangerzone` respectively. Also rename variables that hold instances of this class. This change is part of the initial refactor to make the Dangerzone class handle the core logic of the Dangerzone project. --- dangerzone/cli.py | 12 ++-- dangerzone/gui/__init__.py | 10 +-- dangerzone/gui/common.py | 14 ++-- dangerzone/gui/main_window.py | 78 +++++++++++------------ dangerzone/gui/systray.py | 6 +- dangerzone/{global_common.py => logic.py} | 4 +- dangerzone/settings.py | 10 +-- 7 files changed, 65 insertions(+), 69 deletions(-) rename dangerzone/{global_common.py => logic.py} (86%) diff --git a/dangerzone/cli.py b/dangerzone/cli.py index 45a7305..3270b85 100644 --- a/dangerzone/cli.py +++ b/dangerzone/cli.py @@ -10,7 +10,7 @@ from colorama import Back, Fore, Style from . import args, container, errors from .container import convert from .document import SAFE_EXTENSION, Document -from .global_common import GlobalCommon +from .logic import DangerzoneCore from .util import get_version @@ -32,7 +32,7 @@ def cli_main( output_filename: Optional[str], ocr_lang: Optional[str], filename: str ) -> None: setup_logging() - global_common = GlobalCommon() + dangerzone = DangerzoneCore() display_banner() @@ -47,14 +47,14 @@ def cli_main( # Validate OCR language if ocr_lang: valid = False - for lang in global_common.ocr_languages: - if global_common.ocr_languages[lang] == ocr_lang: + for lang in dangerzone.ocr_languages: + if dangerzone.ocr_languages[lang] == ocr_lang: valid = True break if not valid: click.echo("Invalid OCR language code. Valid language codes:") - for lang in global_common.ocr_languages: - click.echo(f"{global_common.ocr_languages[lang]}: {lang}") + for lang in dangerzone.ocr_languages: + click.echo(f"{dangerzone.ocr_languages[lang]}: {lang}") exit(1) # Ensure container is installed diff --git a/dangerzone/gui/__init__.py b/dangerzone/gui/__init__.py index a87ca1a..4c6999c 100644 --- a/dangerzone/gui/__init__.py +++ b/dangerzone/gui/__init__.py @@ -12,7 +12,7 @@ from PySide2 import QtCore, QtGui, QtWidgets from .. import args, errors from ..document import Document -from ..global_common import GlobalCommon +from ..logic import DangerzoneCore from .common import GuiCommon from .main_window import MainWindow from .systray import SysTray @@ -71,14 +71,14 @@ def gui_main(filename: Optional[str]) -> bool: app = app_wrapper.app # Common objects - global_common = GlobalCommon() - gui_common = GuiCommon(app, global_common) + dangerzone = DangerzoneCore() + gui_common = GuiCommon(app, dangerzone) # 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(global_common, gui_common, app, app_wrapper) + systray = SysTray(dangerzone, gui_common, app, app_wrapper) closed_windows: Dict[str, MainWindow] = {} windows: Dict[str, MainWindow] = {} @@ -91,7 +91,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(global_common, gui_common, window_id, document) + window = MainWindow(dangerzone, gui_common, window_id, document) window.delete_window.connect(delete_window) windows[window_id] = window diff --git a/dangerzone/gui/common.py b/dangerzone/gui/common.py index 956481f..0b834d0 100644 --- a/dangerzone/gui/common.py +++ b/dangerzone/gui/common.py @@ -17,7 +17,7 @@ elif platform.system() == "Linux": import getpass from xdg.DesktopEntry import DesktopEntry -from ..global_common import GlobalCommon +from ..logic import DangerzoneCore from ..settings import Settings from ..util import get_resource_path @@ -29,14 +29,12 @@ class GuiCommon(object): The GuiCommon class is a singleton of shared functionality for the GUI """ - def __init__( - self, app: QtWidgets.QApplication, global_common: GlobalCommon - ) -> None: + def __init__(self, app: QtWidgets.QApplication, dangerzone: DangerzoneCore) -> None: # Qt app self.app = app # Global common singleton - self.global_common = global_common + self.dangerzone = dangerzone # Preload font self.fixed_font = QtGui.QFontDatabase.systemFont(QtGui.QFontDatabase.FixedFont) @@ -67,7 +65,7 @@ class GuiCommon(object): elif platform.system() == "Linux": # Get the PDF reader command args = shlex.split( - self.pdf_viewers[self.global_common.settings.get("open_app")] + self.pdf_viewers[self.dangerzone.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)): @@ -118,13 +116,13 @@ class Alert(QtWidgets.QDialog): def __init__( self, gui_common: GuiCommon, - global_common: GlobalCommon, + dangerzone: DangerzoneCore, message: str, ok_text: str = "Ok", extra_button_text: str = None, ) -> None: super(Alert, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.gui_common = gui_common self.setWindowTitle("dangerzone") diff --git a/dangerzone/gui/main_window.py b/dangerzone/gui/main_window.py index a425ee9..ae4db1e 100644 --- a/dangerzone/gui/main_window.py +++ b/dangerzone/gui/main_window.py @@ -13,7 +13,7 @@ from PySide2 import QtCore, QtGui, QtWidgets from .. import container from ..container import convert from ..document import Document -from ..global_common import GlobalCommon +from ..logic import DangerzoneCore from ..util import get_resource_path, get_subprocess_startupinfo from .common import GuiCommon @@ -25,13 +25,13 @@ class MainWindow(QtWidgets.QMainWindow): def __init__( self, - global_common: GlobalCommon, + dangerzone: DangerzoneCore, gui_common: GuiCommon, window_id: str, document: Document, ) -> None: super(MainWindow, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.gui_common = gui_common self.window_id = window_id self.document = document @@ -58,12 +58,12 @@ class MainWindow(QtWidgets.QMainWindow): header_layout.addStretch() # Waiting widget, replaces content widget while container runtime isn't available - self.waiting_widget = WaitingWidget(self.global_common, self.gui_common) + self.waiting_widget = WaitingWidget(self.dangerzone, self.gui_common) self.waiting_widget.finished.connect(self.waiting_finished) # Content widget, contains all the window content except waiting widget self.content_widget = ContentWidget( - self.global_common, self.gui_common, self.document + self.dangerzone, self.gui_common, self.document ) self.content_widget.close_window.connect(self.close) @@ -103,9 +103,9 @@ class MainWindow(QtWidgets.QMainWindow): class InstallContainerThread(QtCore.QThread): finished = QtCore.Signal() - def __init__(self, global_common: GlobalCommon) -> None: + def __init__(self, dangerzone: DangerzoneCore) -> None: super(InstallContainerThread, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone def run(self) -> None: container.install() @@ -124,9 +124,9 @@ class WaitingWidget(QtWidgets.QWidget): # - "install_container" finished = QtCore.Signal() - def __init__(self, global_common: GlobalCommon, gui_common: GuiCommon) -> None: + def __init__(self, dangerzone: DangerzoneCore, gui_common: GuiCommon) -> None: super(WaitingWidget, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.gui_common = gui_common self.label = QtWidgets.QLabel() @@ -201,7 +201,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.global_common) + self.install_container_t = InstallContainerThread(self.dangerzone) self.install_container_t.finished.connect(self.finished) self.install_container_t.start() @@ -210,11 +210,11 @@ class ContentWidget(QtWidgets.QWidget): close_window = QtCore.Signal() def __init__( - self, global_common: GlobalCommon, gui_common: GuiCommon, document: Document + self, dangerzone: DangerzoneCore, gui_common: GuiCommon, document: Document ) -> None: super(ContentWidget, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.gui_common = gui_common self.document = document @@ -224,7 +224,7 @@ class ContentWidget(QtWidgets.QWidget): # Settings self.settings_widget = SettingsWidget( - self.global_common, self.gui_common, self.document + self.dangerzone, self.gui_common, self.document ) self.doc_selection_widget.document_selected.connect( self.settings_widget.document_selected @@ -235,7 +235,7 @@ class ContentWidget(QtWidgets.QWidget): # Convert self.convert_widget = ConvertWidget( - self.global_common, self.gui_common, self.document + self.dangerzone, self.gui_common, self.document ) self.convert_widget.close_window.connect(self._close_window) self.doc_selection_widget.document_selected.connect( @@ -309,10 +309,10 @@ class SettingsWidget(QtWidgets.QWidget): close_window = QtCore.Signal() def __init__( - self, global_common: GlobalCommon, gui_common: GuiCommon, document: Document + self, dangerzone: DangerzoneCore, gui_common: GuiCommon, document: Document ) -> None: super(SettingsWidget, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.gui_common = gui_common self.document = document @@ -371,8 +371,8 @@ class SettingsWidget(QtWidgets.QWidget): # OCR document self.ocr_checkbox = QtWidgets.QCheckBox("OCR document, language") self.ocr_combobox = QtWidgets.QComboBox() - for k in self.global_common.ocr_languages: - self.ocr_combobox.addItem(k, self.global_common.ocr_languages[k]) + for k in self.dangerzone.ocr_languages: + self.ocr_combobox.addItem(k, self.dangerzone.ocr_languages[k]) ocr_layout = QtWidgets.QHBoxLayout() ocr_layout.addWidget(self.ocr_checkbox) ocr_layout.addWidget(self.ocr_combobox) @@ -403,31 +403,29 @@ class SettingsWidget(QtWidgets.QWidget): self.setLayout(layout) # Load values from settings - if self.global_common.settings.get("save"): + if self.dangerzone.settings.get("save"): self.save_checkbox.setCheckState(QtCore.Qt.Checked) else: self.save_checkbox.setCheckState(QtCore.Qt.Unchecked) - if self.global_common.settings.get("ocr"): + if self.dangerzone.settings.get("ocr"): self.ocr_checkbox.setCheckState(QtCore.Qt.Checked) else: self.ocr_checkbox.setCheckState(QtCore.Qt.Unchecked) - index = self.ocr_combobox.findText( - self.global_common.settings.get("ocr_language") - ) + index = self.ocr_combobox.findText(self.dangerzone.settings.get("ocr_language")) if index != -1: self.ocr_combobox.setCurrentIndex(index) if platform.system() == "Darwin" or platform.system() == "Linux": - if self.global_common.settings.get("open"): + if self.dangerzone.settings.get("open"): self.open_checkbox.setCheckState(QtCore.Qt.Checked) else: self.open_checkbox.setCheckState(QtCore.Qt.Unchecked) if platform.system() == "Linux": index = self.open_combobox.findText( - self.global_common.settings.get("open_app") + self.dangerzone.settings.get("open_app") ) if index != -1: self.open_combobox.setCurrentIndex(index) @@ -475,22 +473,22 @@ class SettingsWidget(QtWidgets.QWidget): self.document.output_filename = tmp[1] # Update settings - self.global_common.settings.set( + self.dangerzone.settings.set( "save", self.save_checkbox.checkState() == QtCore.Qt.Checked ) - self.global_common.settings.set( + self.dangerzone.settings.set( "ocr", self.ocr_checkbox.checkState() == QtCore.Qt.Checked ) - self.global_common.settings.set("ocr_language", self.ocr_combobox.currentText()) + self.dangerzone.settings.set("ocr_language", self.ocr_combobox.currentText()) if platform.system() == "Darwin" or platform.system() == "Linux": - self.global_common.settings.set( + self.dangerzone.settings.set( "open", self.open_checkbox.checkState() == QtCore.Qt.Checked ) if platform.system() == "Linux": - self.global_common.settings.set( + self.dangerzone.settings.set( "open_app", self.open_combobox.currentText() ) - self.global_common.settings.save() + self.dangerzone.settings.save() # Start! self.start_clicked.emit() @@ -500,16 +498,16 @@ class ConvertThread(QtCore.QThread): finished = QtCore.Signal(bool) update = QtCore.Signal(bool, str, int) - def __init__(self, global_common: GlobalCommon, document: Document) -> None: + def __init__(self, dangerzone: DangerzoneCore, document: Document) -> None: super(ConvertThread, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.document = document self.error = False def run(self) -> None: - if self.global_common.settings.get("ocr"): - ocr_lang = self.global_common.ocr_languages[ - self.global_common.settings.get("ocr_language") + if self.dangerzone.settings.get("ocr"): + ocr_lang = self.dangerzone.ocr_languages[ + self.dangerzone.settings.get("ocr_language") ] else: ocr_lang = None @@ -549,10 +547,10 @@ class ConvertWidget(QtWidgets.QWidget): close_window = QtCore.Signal() def __init__( - self, global_common: GlobalCommon, gui_common: GuiCommon, document: Document + self, dangerzone: DangerzoneCore, gui_common: GuiCommon, document: Document ) -> None: super(ConvertWidget, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.gui_common = gui_common self.document = document @@ -602,7 +600,7 @@ class ConvertWidget(QtWidgets.QWidget): ) def start(self) -> None: - self.convert_t = ConvertThread(self.global_common, self.document) + self.convert_t = ConvertThread(self.dangerzone, self.document) self.convert_t.update.connect(self.update_progress) self.convert_t.finished.connect(self.all_done) self.convert_t.start() @@ -630,7 +628,7 @@ class ConvertWidget(QtWidgets.QWidget): ) # Open - if self.global_common.settings.get("open"): + if self.dangerzone.settings.get("open"): self.gui_common.open_pdf_viewer(self.document.output_filename) # Quit diff --git a/dangerzone/gui/systray.py b/dangerzone/gui/systray.py index 081e8e0..676dd2a 100644 --- a/dangerzone/gui/systray.py +++ b/dangerzone/gui/systray.py @@ -3,7 +3,7 @@ from typing import TYPE_CHECKING from PySide2 import QtWidgets -from ..global_common import GlobalCommon +from ..logic import DangerzoneCore from .common import GuiCommon if TYPE_CHECKING: @@ -13,13 +13,13 @@ if TYPE_CHECKING: class SysTray(QtWidgets.QSystemTrayIcon): def __init__( self, - global_common: GlobalCommon, + dangerzone: DangerzoneCore, gui_common: GuiCommon, app: QtWidgets.QApplication, app_wrapper: "ApplicationWrapper", ) -> None: super(SysTray, self).__init__() - self.global_common = global_common + self.dangerzone = dangerzone self.gui_common = gui_common self.app = app self.app_wrapper = app_wrapper diff --git a/dangerzone/global_common.py b/dangerzone/logic.py similarity index 86% rename from dangerzone/global_common.py rename to dangerzone/logic.py index e7928d2..7f803ae 100644 --- a/dangerzone/global_common.py +++ b/dangerzone/logic.py @@ -18,9 +18,9 @@ from .util import get_resource_path log = logging.getLogger(__name__) -class GlobalCommon(object): +class DangerzoneCore(object): """ - The GlobalCommon class is a singleton of shared functionality throughout the app + The DangerzoneCore class is a singleton of shared functionality throughout the app """ def __init__(self) -> None: diff --git a/dangerzone/settings.py b/dangerzone/settings.py index 0c8355c..ddd1273 100644 --- a/dangerzone/settings.py +++ b/dangerzone/settings.py @@ -6,16 +6,16 @@ from typing import TYPE_CHECKING, Any, Dict, Optional log = logging.getLogger(__name__) if TYPE_CHECKING: - from .global_common import GlobalCommon + from .logic import DangerzoneCore class Settings: settings: Dict[str, Any] - def __init__(self, global_common: "GlobalCommon") -> None: - self.global_common = global_common + def __init__(self, dangerzone: "DangerzoneCore") -> None: + self.dangerzone = dangerzone self.settings_filename = os.path.join( - self.global_common.appdata_path, "settings.json" + self.dangerzone.appdata_path, "settings.json" ) self.default_settings: Dict[str, Any] = { "save": True, @@ -59,6 +59,6 @@ class Settings: self.save() def save(self) -> None: - os.makedirs(self.global_common.appdata_path, exist_ok=True) + os.makedirs(self.dangerzone.appdata_path, exist_ok=True) with open(self.settings_filename, "w") as settings_file: json.dump(self.settings, settings_file, indent=4)