diff --git a/src/Mod/Start/Gui/ThemeSelectorWidget.cpp b/src/Mod/Start/Gui/ThemeSelectorWidget.cpp index 5a11316979..7c5c726a98 100644 --- a/src/Mod/Start/Gui/ThemeSelectorWidget.cpp +++ b/src/Mod/Start/Gui/ThemeSelectorWidget.cpp @@ -33,7 +33,7 @@ #include "ThemeSelectorWidget.h" #include #include -#include +#include #include using namespace StartGui; @@ -101,10 +101,29 @@ void ThemeSelectorWidget::setupUi() _titleLabel = gsl::owner(new QLabel); _descriptionLabel = gsl::owner(new QLabel); outerLayout->addWidget(_titleLabel); - outerLayout->addWidget(_descriptionLabel); outerLayout->addLayout(buttonLayout); + outerLayout->addWidget(_descriptionLabel); setupButtons(buttonLayout); retranslateUi(); + connect(_descriptionLabel, &QLabel::linkActivated, this, &ThemeSelectorWidget::onLinkActivated); +} + +void ThemeSelectorWidget::onLinkActivated(const QString& link) +{ + auto const addonManagerLink = QStringLiteral("freecad:Std_AddonMgr"); + + if (link != addonManagerLink) { + return; + } + + // Set the user preferences to include only preference packs. + // This is a quick and dirty way to open Addon Manager with only themes. + auto pref = + App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Addons"); + pref->SetInt("PackageTypeSelection", 3); // 3 stands for Preference Packs + pref->SetInt("StatusSelection", 0); // 0 stands for any installation status + + Gui::Application::Instance->commandManager().runCommandByName("Std_AddonMgr"); } void ThemeSelectorWidget::themeChanged(Theme newTheme) @@ -135,7 +154,8 @@ bool ThemeSelectorWidget::eventFilter(QObject* object, QEvent* event) void ThemeSelectorWidget::retranslateUi() { _titleLabel->setText(QLatin1String("

") + tr("Theme") + QLatin1String("

")); - _descriptionLabel->setText(tr("More themes are available online using the Addon Manager")); + _descriptionLabel->setText(tr("Looking for more themes? You can obtain them using " + "Addon Manager.")); _buttons[static_cast(Theme::Dark)]->setText(tr("Dark theme", "Visual theme name")); _buttons[static_cast(Theme::Light)]->setText(tr("Light theme", "Visual theme name")); _buttons[static_cast(Theme::Classic)]->setText(tr("Classic", "Visual theme name")); diff --git a/src/Mod/Start/Gui/ThemeSelectorWidget.h b/src/Mod/Start/Gui/ThemeSelectorWidget.h index d555c72bec..3ff9ebbc44 100644 --- a/src/Mod/Start/Gui/ThemeSelectorWidget.h +++ b/src/Mod/Start/Gui/ThemeSelectorWidget.h @@ -56,6 +56,7 @@ private: void retranslateUi(); void setupUi(); void setupButtons(QBoxLayout* layout); + void onLinkActivated(const QString& link); QLabel* _titleLabel; QLabel* _descriptionLabel;