diff --git a/src/briar-gtk.in b/src/briar-gtk.in index 0bd3f8e869649d7f9ecf2e5d95bc86e9c704167a..a0ab663418038381763817f013b1bcf5fc74790f 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 ca2540299242a12271648fa236f626084a75c9da..ec5d00a88e12ec05484dfacd80d3fbf03fb7ccfc 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 66ec252d66be6664fc771e379f8cb35806ddf35f..af9edb3e4624b621c5427be31adf90c91d8efdf1 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