Opening the preset dropdown now updates the menu

I don't think it's that reliable but whatever
This commit is contained in:
ArtyIF 2022-08-01 12:31:36 +03:00
parent bc50c1ebab
commit 2f27fc3563
3 changed files with 20 additions and 7 deletions

View file

@ -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)

View file

@ -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"]

View file

@ -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()