From 7c16dadda4e774112a2ffe62270fdba5e5482912 Mon Sep 17 00:00:00 2001 From: Laurent Monin Date: Fri, 26 Apr 2024 14:13:14 +0200 Subject: [PATCH] Add an order to UserProfileGroups groups according to the display order A bit hacky... --- picard/profile.py | 14 +++++++++++++- picard/ui/options/dialog.py | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/picard/profile.py b/picard/profile.py index 2809cf7fa..d974ea5ec 100644 --- a/picard/profile.py +++ b/picard/profile.py @@ -23,7 +23,10 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -from collections import namedtuple +from collections import ( + defaultdict, + namedtuple, +) SettingDesc = namedtuple('SettingDesc', ('name', 'fields')) @@ -35,6 +38,15 @@ class UserProfileGroups(): """ _settings_groups = {} + _groups_order = defaultdict(lambda: -1) + _groups_count = 0 + + @classmethod + def order(cls, group): + if cls._groups_order[group] == -1: + cls._groups_order[group] = cls._groups_count + cls._groups_count += 1 + @classmethod def append_to_group(cls, group, option, highlights, title=None): if group not in cls._settings_groups: diff --git a/picard/ui/options/dialog.py b/picard/ui/options/dialog.py index 6f89aaba3..a3afd5f49 100644 --- a/picard/ui/options/dialog.py +++ b/picard/ui/options/dialog.py @@ -104,6 +104,7 @@ class OptionsDialog(PicardDialog, SingletonDialog): self.item_to_page[item] = page self.page_to_item[page.NAME] = item self.ui.pages_stack.addWidget(page) + UserProfileGroups.order(page.NAME) else: item.setFlags(QtCore.Qt.ItemFlag.ItemIsEnabled) self.add_pages(page.NAME, default_page, item)