diff --git a/src/main.py b/src/main.py index c8585959..fa5d9377 100644 --- a/src/main.py +++ b/src/main.py @@ -126,10 +126,20 @@ class AdwcustomizerApplication(Adw.Application): self.create_action("save_preset", self.show_save_preset_dialog) self.create_action("about", self.show_about_window) + self.reload_user_defined_presets() + + win.present() + self.is_ready = True + + def reload_user_defined_presets(self): + if self.props.active_window.presets_menu.get_n_items() > 1: + self.props.active_window.presets_menu.remove(1) + preset_directory = os.path.join(os.environ['XDG_CONFIG_HOME'], "presets") if not os.path.exists(preset_directory): os.makedirs(preset_directory) + self.custom_presets.clear() for file_name in os.listdir(preset_directory): if file_name.endswith(".json"): try: @@ -161,12 +171,8 @@ class AdwcustomizerApplication(Adw.Application): open_in_file_manager_item = Gio.MenuItem() open_in_file_manager_item.set_label(_("Open in File Manager")) open_in_file_manager_item.set_action_and_target_value("app.open_preset_directory") - # does not work yet for some reason, i asked people in flatpak matrix room custom_menu_section.append_item(open_in_file_manager_item) - win.presets_menu.append_section(_("User Defined Presets"), custom_menu_section) - win.present() - - self.is_ready = True + self.props.active_window.presets_menu.append_section(_("User Defined Presets"), custom_menu_section) def open_preset_directory(self, *_args): parent = XdpGtk4.parent_new_gtk(self.props.active_window) diff --git a/src/ui/window.blp b/src/ui/window.blp index f8d98e71..899be98e 100644 --- a/src/ui/window.blp +++ b/src/ui/window.blp @@ -1,12 +1,12 @@ using Gtk 4.0; using Adw 1; -template AdwcustomizerMainWindow : Gtk.ApplicationWindow { +template AdwcustomizerMainWindow : ApplicationWindow { title: _("Adwaita Manager"); default-width: 1280; default-height: 720; - titlebar: Gtk.HeaderBar { + titlebar: HeaderBar { [start] Button apply-button { styles ["suggested-action"] diff --git a/src/window.py b/src/window.py index ae92d804..58ad4844 100644 --- a/src/window.py +++ b/src/window.py @@ -39,6 +39,10 @@ class AdwcustomizerMainWindow(Gtk.ApplicationWindow): errors_button = Gtk.Template.Child("errors-button") errors_list = Gtk.Template.Child("errors-list") + def __init__(self, **kwargs): + super().__init__(**kwargs) + self.presets_dropdown.get_popover().connect("show", self.on_presets_dropdown_activate) + def set_current_preset_name(self, new_name): self.presets_dropdown.set_label(new_name) @@ -50,3 +54,6 @@ class AdwcustomizerMainWindow(Gtk.ApplicationWindow): self.errors_button.set_visible(len(errors) > 0) for error in errors: self.errors_list.append(AdwcustomizerError(error["error"], error["element"], error["line"])) + + def on_presets_dropdown_activate(self, *args): + self.get_application().reload_user_defined_presets()