diff --git a/data/ui/meson.build b/data/ui/meson.build index 43703de..79e2878 100644 --- a/data/ui/meson.build +++ b/data/ui/meson.build @@ -1,5 +1,6 @@ blueprints = custom_target('blueprints', input: files( + 'preferences.blp', 'window.blp', ), output: '.', diff --git a/data/ui/preferences.blp b/data/ui/preferences.blp new file mode 100644 index 0000000..c194375 --- /dev/null +++ b/data/ui/preferences.blp @@ -0,0 +1,28 @@ +using Gtk 4.0; +using Adw 1; + +template GradiencePreferencesWindow : Adw.PreferencesWindow { + title: _("Preferences"); + default-height: 400; + default-width: 600; + modal: true; + + Adw.PreferencesPage general_page { + Adw.PreferencesGroup prompt_group { + title: _("Prompt"); + + Adw.ActionRow { + title: _("Clear prompt after send"); + subtitle: _("The prompt will be cleared after send"); + activatable-widget: clear_after_send_switch; + Gtk.Switch clear_after_send_switch { + valign: center; + } + } + + + } + + + } +} \ No newline at end of file diff --git a/src/preferences.py b/src/preferences.py new file mode 100644 index 0000000..e1d03a8 --- /dev/null +++ b/src/preferences.py @@ -0,0 +1,31 @@ +from gi.repository import Gtk, Adw + + +@Gtk.Template(resource_path="/com/github/Bavarder/Bavarder/ui/preferences.ui") +class Preferences(Adw.PreferencesWindow): + __gtype_name__ = "GradiencePreferencesWindow" + + clear_after_send_switch = Gtk.Template.Child() + + def __init__(self, application, **kwargs): + super().__init__(**kwargs) + + self.app = application + self.settings = application.settings + + self.win = self.app.get_active_window() + + + self.setup() + + def setup(self): + clear_after_send = self.settings.get_boolean("clear-after-send") + self.clear_after_send_switch.connect("state-set", self.on_clear_after_send_switch_toggled) + + def on_clear_after_send_switch_toggled(self, *args): + state = self.clear_after_send_switch.props.state + + if state: + self.settings.set_boolean("clear-after-send", True) + else: + self.settings.set_boolean("clear-after-send", False)