68 lines
2.0 KiB
Python
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()
|