# Copyright 2022 (c) Anna Schumaker. """Set up our Application.""" from . import gsetup from . import db from . import mpris2 from . import options from gi.repository import GObject from gi.repository import GLib from gi.repository import Adw MAJOR_VERSION = 3 MINOR_VERSION = 0 VERSION_STRING = f"Emmental {MAJOR_VERSION}.{MINOR_VERSION}{gsetup.DEBUG_STR}" class Application(Adw.Application): """Our custom Adw.Application.""" db = GObject.Property(type=db.Connection) mpris = GObject.Property(type=mpris2.Connection) def __init__(self): """Initialize an Application.""" super().__init__(application_id=gsetup.APPLICATION_ID, resource_base_path=gsetup.RESOURCE_PATH) self.add_main_option_entries([options.Version]) def do_handle_local_options(self, opts: GLib.VariantDict) -> int: """Handle any command line options.""" if opts.contains("version"): print(VERSION_STRING) gsetup.print_versions() return 0 return -1 def do_startup(self) -> None: """Handle the Adw.Application::startup signal.""" Adw.Application.do_startup(self) self.db = db.Connection() self.mpris = mpris2.Connection() gsetup.add_style() self.db.load() def do_activate(self) -> None: """Handle the Adw.Application::activate signal.""" Adw.Application.do_activate(self) def do_shutdown(self) -> None: """Handle the Adw.Application::shutdown signal.""" Adw.Application.do_shutdown(self) if self.mpris is not None: self.mpris.disconnect() self.mpris = None if self.db is not None: self.db.close() self.db = None