From 22d9fb5aa77d77b9bb6cd21cb136dda3ab81bb56 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Mon, 28 Aug 2023 17:39:44 +0200 Subject: [PATCH] Pref: wb: Add contextual menu to sort alphabetically. (#10363) Co-authored-by: Paddle --- .../DlgSettingsWorkbenchesImp.cpp | 25 ++++++++++++++++++- .../DlgSettingsWorkbenchesImp.h | 1 + 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.cpp b/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.cpp index de6b97c4f0..35cfc1c1cd 100644 --- a/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.cpp +++ b/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.cpp @@ -24,9 +24,11 @@ #include "PreCompiled.h" #ifndef _PreComp_ +#include #include -#include #include +#include +#include #include #endif @@ -234,6 +236,16 @@ DlgSettingsWorkbenchesImp::DlgSettingsWorkbenchesImp( QWidget* parent ) ui->wbList->setDragEnabled(true); ui->wbList->setDefaultDropAction(Qt::MoveAction); + QAction* sortAction = new QAction(tr("Sort alphabetically"), this); + connect(sortAction, &QAction::triggered, this, &DlgSettingsWorkbenchesImp::sortEnabledWorkbenches); + + QMenu* contextMenu = new QMenu(ui->wbList); + contextMenu->addAction(sortAction); + ui->wbList->setContextMenuPolicy(Qt::CustomContextMenu); + connect(ui->wbList, &QListWidget::customContextMenuRequested, this, [this, contextMenu](const QPoint& pos) { + contextMenu->exec(ui->wbList->mapToGlobal(pos)); + }); + connect(ui->wbList->model(), &QAbstractItemModel::rowsMoved, this, &DlgSettingsWorkbenchesImp::wbItemMoved); connect(ui->AutoloadModuleCombo, qOverload(&QComboBox::activated), this, &DlgSettingsWorkbenchesImp::onStartWbChanged); connect(ui->WorkbenchSelectorPosition, qOverload(&QComboBox::activated), this, &DlgSettingsWorkbenchesImp::onWbSelectorChanged); @@ -345,6 +357,8 @@ void DlgSettingsWorkbenchesImp::buildWorkbenchList() { QSignalBlocker sigblk(ui->wbList); + ui->wbList->clear(); + QStringList enabledWbs = getEnabledWorkbenches(); QStringList disabledWbs = getDisabledWorkbenches(); @@ -584,5 +598,14 @@ void DlgSettingsWorkbenchesImp::onWbByTabToggled(bool val) requireRestart(); } +void DlgSettingsWorkbenchesImp::sortEnabledWorkbenches() +{ + ParameterGrp::handle hGrp; + + hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Workbenches"); + hGrp->SetASCII("Ordered", ""); + + buildWorkbenchList(); +} #include "moc_DlgSettingsWorkbenchesImp.cpp" #include "DlgSettingsWorkbenchesImp.moc" diff --git a/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.h b/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.h index 13c3b4ba65..6432e75a28 100644 --- a/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.h +++ b/src/Gui/PreferencePages/DlgSettingsWorkbenchesImp.h @@ -64,6 +64,7 @@ protected: private: void addWorkbench(const QString& it, bool enabled); + void sortEnabledWorkbenches(); void setStartWorkbenchComboItems();