# Copyright 2022 (c) Anna Schumaker. """Set up GObject Introspection, and custom styling, and icons.""" import pathlib import sys import sqlite3 import gi import xdg.BaseDirectory gi.require_version("Pango", "1.0") gi.require_version("Gdk", "4.0") gi.require_version("Gtk", "4.0") gi.require_version("Adw", "1") gi.require_version("Gst", "1.0") gi.importlib.import_module("gi.repository.Gio") gi.importlib.import_module("gi.repository.Gtk") gi.importlib.import_module("gi.repository.Gst").init(sys.argv) DEBUG_STR = "-debug" if __debug__ else "" APPLICATION_ID = f"com.nowheycreamery.emmental{DEBUG_STR}" CSS_FILE = pathlib.Path(__file__).parent / "emmental.css" CSS_PRIORITY = gi.repository.Gtk.STYLE_PROVIDER_PRIORITY_APPLICATION CSS_PROVIDER = gi.repository.Gtk.CssProvider() CSS_PROVIDER.load_from_path(str(CSS_FILE)) CACHE_DIR = pathlib.Path(xdg.BaseDirectory.save_cache_path("emmental")) CACHE_DIR = CACHE_DIR / DEBUG_STR.lstrip("-") DATA_DIR = pathlib.Path(xdg.BaseDirectory.save_data_path("emmental")) RESOURCE_PATH = "/com/nowheycreamery/emmental" RESOURCE_ICONS = f"{RESOURCE_PATH}/icons/scalable/apps" RESOURCE_FILE = pathlib.Path(__file__).parent.parent / "emmental.gresource" RESOURCE = gi.repository.Gio.Resource.load(str(RESOURCE_FILE)) gi.repository.Gio.resources_register(RESOURCE) def add_style(): """Add our stylesheet to the default display.""" style = gi.repository.Gtk.StyleContext style.add_provider_for_display(gi.repository.Gdk.Display.get_default(), CSS_PROVIDER, CSS_PRIORITY) def __version_string(subsystem, major, minor, micro): return f" ⋅ {subsystem} {major}.{minor}.{micro}" def env_string() -> str: """Return a string with the version numbers of our dependencies.""" gst = gi.repository.Gst.version() strs = [__version_string("Python", sys.version_info.major, sys.version_info.minor, sys.version_info.micro), __version_string("Gtk", gi.repository.Gtk.MAJOR_VERSION, gi.repository.Gtk.MINOR_VERSION, gi.repository.Gtk.MICRO_VERSION), __version_string("Libadwaita", gi.repository.Adw.MAJOR_VERSION, gi.repository.Adw.MINOR_VERSION, gi.repository.Adw.MICRO_VERSION), __version_string("GStreamer", gst.major, gst.minor, gst.micro), __version_string("Pango", gi.repository.Pango.VERSION_MAJOR, gi.repository.Pango.VERSION_MINOR, gi.repository.Pango.VERSION_MICRO), __version_string("SQLite", sqlite3.sqlite_version_info[0], sqlite3.sqlite_version_info[1], sqlite3.sqlite_version_info[2])] return "\n".join(strs) def print_env() -> None: """Print the environment versions to stdout.""" print(env_string())