Bavarder/src/views/main_window.py

68 lines
2.0 KiB
Python

from gi.repository import Adw, Gtk, Gio
from bavarder.constants import app_id, build_type
@Gtk.Template(resource_path="/io/github/Bavarder/Bavarder/ui/window.ui")
class BavarderWindow(Adw.ApplicationWindow):
__gtype_name__ = "BavarderWindow"
toast_overlay = Gtk.Template.Child()
prompt_text_view = Gtk.Template.Child()
ask_button = Gtk.Template.Child()
scrolled_response_window = Gtk.Template.Child()
bot_text_view = Gtk.Template.Child()
banner = Gtk.Template.Child()
stop_button = Gtk.Template.Child()
# listen = Gtk.Template.Child()
# listen_wait = Gtk.Template.Child()
# listen_spinner = Gtk.Template.Child()
# speak = Gtk.Template.Child()
# speak_wait = Gtk.Template.Child()
# speak_spinner = Gtk.Template.Child()
menu = Gtk.Template.Child()
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.app = Gtk.Application.get_default()
self.settings = Gio.Settings(schema_id=app_id)
self.setup_signals()
self.setup_window_props()
self.setup()
def setup_window_props(self):
self.settings.bind(
"width", self, "default-width", Gio.SettingsBindFlags.DEFAULT
)
self.settings.bind(
"height", self, "default-height", Gio.SettingsBindFlags.DEFAULT
)
self.settings.bind(
"is-maximized", self, "maximized", Gio.SettingsBindFlags.DEFAULT
)
self.settings.bind(
"is-fullscreen", self, "fullscreened", Gio.SettingsBindFlags.DEFAULT
)
def setup_signals(self):
self.connect("close-request",
self.on_close_request)
def setup(self):
# Set devel style
if build_type == "debug":
self.get_style_context().add_class("devel")
def on_close_request(self, *args):
self.settings.set_strv("enabled-providers", list(self.app.enabled_providers))
self.settings.set_string("latest-provider", self.app.provider)
self.app.save_providers()
self.close()