From 30513d8a599d95d894ca004d87c60bbe8b604eaa Mon Sep 17 00:00:00 2001 From: Nico Alt <nicoalt@posteo.org> Date: Mon, 30 Sep 2019 00:43:44 +0200 Subject: [PATCH] Rework application.py to make it more clean --- src/briar-gtk.in | 2 +- src/briar/gtk/application.py | 49 ++++++++++++++++++++++-------------- src/briar/gtk/define.py | 4 +++ 3 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src/briar-gtk.in b/src/briar-gtk.in index 0bd3f8e..a0ab663 100755 --- a/src/briar-gtk.in +++ b/src/briar-gtk.in @@ -50,7 +50,7 @@ def prepare(): def start_application(): from briar.gtk.application import Application - sys.exit(Application("@VERSION@").run(sys.argv)) + sys.exit(Application().run(sys.argv)) if __name__ == '__main__': prepare() diff --git a/src/briar/gtk/application.py b/src/briar/gtk/application.py index ca25402..ec5d00a 100644 --- a/src/briar/gtk/application.py +++ b/src/briar/gtk/application.py @@ -10,45 +10,56 @@ from gi.repository import Gdk, Gio, GLib, Gtk from briar.api.api import Api +from briar.gtk.define import APPLICATION_ID, APPLICATION_NAME +from briar.gtk.define import BRIAR_HEADLESS_JAR from briar.gtk.window import Window class Application(Gtk.Application): - def __init__(self, version): - GLib.set_application_name("Briar") - GLib.set_prgname("Briar") - super().__init__(application_id='app.briar.gtk') - self.window = None - self._set_version(version) + def __init__(self): + Application._set_application_name() + super().__init__(application_id=APPLICATION_ID) # pylint: disable=arguments-differ def do_startup(self): Gtk.Application.do_startup(self) + Application._setup_styling() + self._setup_api() + # pylint: disable=arguments-differ + def do_activate(self): + self._setup_window() + + # pylint: disable=arguments-differ + def quit(self): + self.api.stop() + self.window.hide() + Gio.Application.quit(self) + + @staticmethod + def _set_application_name(): + GLib.set_application_name(APPLICATION_NAME) + GLib.set_prgname(APPLICATION_NAME) + + @staticmethod + def _setup_styling(): css_provider_file = Gio.File.new_for_uri( "resource:///app/briar/gtk/ui/application.css") css_provider = Gtk.CssProvider() css_provider.load_from_file(css_provider_file) + screen = Gdk.Screen.get_default() style_context = Gtk.StyleContext() style_context.add_provider_for_screen(screen, css_provider, Gtk.STYLE_PROVIDER_PRIORITY_USER) - self.api = Api('/app/briar/briar-headless.jar') + def _setup_api(self): + self.api = Api(BRIAR_HEADLESS_JAR) - # pylint: disable=arguments-differ - def do_activate(self): - if self.window is None: + # pylint: disable=access-member-before-definition + def _setup_window(self): + if not hasattr(self, "window") or self.window is None: self.window = Window() self.window.show() self.window.present() - - # pylint: disable=arguments-differ - def quit(self): - self.api.stop() - self.window.hide() - Gio.Application.quit(self) - - def _set_version(self, version): - self._version = version diff --git a/src/briar/gtk/define.py b/src/briar/gtk/define.py index 66ec252..af9edb3 100644 --- a/src/briar/gtk/define.py +++ b/src/briar/gtk/define.py @@ -8,4 +8,8 @@ from gi.repository import Gio +APPLICATION_ID = "app.briar.gtk" +APPLICATION_NAME = "Briar" +BRIAR_HEADLESS_JAR = "/app/briar/briar-headless.jar" + App = Gio.Application.get_default # pylint: disable=invalid-name -- GitLab