From 1dc1acaba38784e9273c61683a1dfcf56ee06296 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Thu, 29 Aug 2019 09:56:34 +1000 Subject: [PATCH] gui: move most of the tuhi-gui startup script to application.py Add a new main() there so we have a single entry point for the gui instead of a complex script that needs to be called. That start up script should really just be the minimum bits possible. It's still not perfect because we won't work without the gresources and they require that the pkgdatadir is set. But at least it moves all the logic out of the startup script. Signed-off-by: Peter Hutterer --- tuhi-gui.in | 58 +++---------------------------------- tuhi/gui/application.py | 64 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 63 insertions(+), 59 deletions(-) diff --git a/tuhi-gui.in b/tuhi-gui.in index 3950364..22d9501 100755 --- a/tuhi-gui.in +++ b/tuhi-gui.in @@ -13,8 +13,7 @@ except ValueError as e: sys.exit(1) gi.require_version('Gio', '2.0') # NOQA -gi.require_version('Gtk', '3.0') # NOQA -from gi.repository import Gio, Gtk, Gdk +from gi.repository import Gio @devel@ # NOQA @@ -22,61 +21,12 @@ resource = Gio.resource_load(os.fspath(Path('@pkgdatadir@', 'tuhi.gresource'))) Gio.Resource._register(resource) -def install_excepthook(): - old_hook = sys.excepthook - - def new_hook(etype, evalue, etb): - old_hook(etype, evalue, etb) - while Gtk.main_level(): - Gtk.main_quit() - sys.exit() - sys.excepthook = new_hook - - -def gtk_style(): - css = b""" - flowboxchild:selected { - background-color: white; - } - .bg-white { - background-color: white; - } - .bg-paper { - border-radius: 5px; - background-color: #ebe9e8; - } - .drawing { - background-color: white; - border-radius: 5px; - } - """ - - screen = Gdk.Screen.get_default() - if screen is None: - print('Error: Unable to connect to screen. Make sure DISPLAY or WAYLAND_DISPLAY are set', file=sys.stderr) - sys.exit(1) - style_provider = Gtk.CssProvider() - style_provider.load_from_data(css) - Gtk.StyleContext.add_provider_for_screen( - screen, - style_provider, - Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION - ) - - if __name__ == "__main__": import gettext import locale - import signal - from tuhi.gui.application import Application - - install_excepthook() - gtk_style() locale.bindtextdomain('tuhi', '@localedir@') - locale.textdomain('tuhi') gettext.bindtextdomain('tuhi', '@localedir@') - gettext.textdomain('tuhi') - signal.signal(signal.SIGINT, signal.SIG_DFL) - exit_status = Application().run(sys.argv) - sys.exit(exit_status) + + from tuhi.gui.application import main + main(sys.argv) diff --git a/tuhi/gui/application.py b/tuhi/gui/application.py index c4fbeac..6aaebf1 100644 --- a/tuhi/gui/application.py +++ b/tuhi/gui/application.py @@ -11,18 +11,17 @@ # GNU General Public License for more details. # -from gi.repository import Gio, GLib, Gtk -import logging - from .window import MainWindow from .config import Config -import xdg.BaseDirectory from pathlib import Path +import logging +import sys +import xdg.BaseDirectory import gi gi.require_version("Gio", "2.0") gi.require_version("Gtk", "3.0") - +from gi.repository import Gio, GLib, Gtk, Gdk # NOQA logging.basicConfig(format='%(asctime)s %(levelname)s: %(name)s: %(message)s', level=logging.INFO, @@ -105,3 +104,58 @@ class Application(Gtk.Application): def _help(self, action, param): import time Gtk.show_uri(None, 'https://github.com/tuhiproject/tuhi/wiki', time.time()) + + +def install_excepthook(): + old_hook = sys.excepthook + + def new_hook(etype, evalue, etb): + old_hook(etype, evalue, etb) + while Gtk.main_level(): + Gtk.main_quit() + sys.exit() + sys.excepthook = new_hook + + +def gtk_style(): + css = b""" + flowboxchild:selected { + background-color: white; + } + .bg-white { + background-color: white; + } + .bg-paper { + border-radius: 5px; + background-color: #ebe9e8; + } + .drawing { + background-color: white; + border-radius: 5px; + } + """ + + screen = Gdk.Screen.get_default() + if screen is None: + print('Error: Unable to connect to screen. Make sure DISPLAY or WAYLAND_DISPLAY are set', file=sys.stderr) + sys.exit(1) + style_provider = Gtk.CssProvider() + style_provider.load_from_data(css) + Gtk.StyleContext.add_provider_for_screen(screen, + style_provider, + Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION) + + +def main(argv): + import gettext + import locale + import signal + + install_excepthook() + gtk_style() + + locale.textdomain('tuhi') + gettext.textdomain('tuhi') + signal.signal(signal.SIGINT, signal.SIG_DFL) + exit_status = Application().run(argv) + sys.exit(exit_status)