Preferences: reset preference pages parameters set without using "PrefWidgets" objects

Signed-off-by: CalligaroV <vincenzo.calligaro@gmail.com>
This commit is contained in:
CalligaroV
2024-01-13 11:39:22 +01:00
committed by Chris Hennes
parent bdb82b8f8a
commit adb1fcfed8
15 changed files with 184 additions and 3 deletions

View File

@@ -866,6 +866,11 @@ void DlgPreferencesImp::restorePageDefaults(PreferencesPageItem* item)
auto* page = qobject_cast<PreferencePage*>(item->getWidget());
page->resetSettingsToDefaults();
/**
* Let's save the restart request before the page object is deleted and replaced with
* the newPage object (wich has restartRequired initialized to false)
*/
restartRequired = restartRequired || page->isRestartRequired();
std::string pageName = page->property(PageNameProperty).toString().toStdString();
std::string groupName = page->property(GroupNameProperty).toString().toStdString();

View File

@@ -135,6 +135,21 @@ void DlgSettings3DViewImp::loadSettings()
ui->boxMarkerSize->setCurrentIndex(index);
}
void DlgSettings3DViewImp::resetSettingsToDefaults()
{
ParameterGrp::handle hGrp;
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View");
//reset "AntiAliasing" parameter
hGrp->RemoveInt("AntiAliasing");
//reset "RenderCache" parameter
hGrp->RemoveInt("RenderCache");
//reset "MarkerSize" parameter
hGrp->RemoveInt("MarkerSize");
//finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
}
/**
* Sets the strings of the subwidgets using the current language.
*/

View File

@@ -48,6 +48,7 @@ public:
void saveSettings() override;
void loadSettings() override;
void resetSettingsToDefaults() override;
private Q_SLOTS:
void onAliasingChanged(int);

View File

@@ -98,6 +98,19 @@ void DlgSettingsCacheDirectory::loadSettings()
ui->comboBoxLimit->setCurrentIndex(index);
}
void DlgSettingsCacheDirectory::resetSettingsToDefaults()
{
ParameterGrp::handle hGrp;
hGrp = WindowParameter::getDefaultParameter()->GetGroup("CacheDirectory");
//reset "Limit" parameter
hGrp->RemoveUnsigned("Limit");
//reset "Period" parameter
hGrp->RemoveInt("Period");
//finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
}
void DlgSettingsCacheDirectory::changeEvent(QEvent *e)
{
if (e->type() == QEvent::LanguageChange) {

View File

@@ -46,6 +46,7 @@ public:
void saveSettings() override;
void loadSettings() override;
void resetSettingsToDefaults() override;
protected:
void changeEvent(QEvent *e) override;

View File

@@ -327,6 +327,23 @@ void DlgSettingsEditor::loadSettings()
ui->displayItems->setCurrentItem(ui->displayItems->topLevelItem(0));
}
void DlgSettingsEditor::resetSettingsToDefaults()
{
ParameterGrp::handle hGrp;
hGrp = WindowParameter::getDefaultParameter()->GetGroup("Editor");
//reset the parameters in the "Editor" group
for (QVector<QPair<QString, unsigned int> >::Iterator it = d->colormap.begin(); it != d->colormap.end(); ++it) {
hGrp->RemoveUnsigned((*it).first.toLatin1());
}
//reset "FontSize" parameter
hGrp->RemoveInt("FontSize");
//reset "Font" parameter
hGrp->RemoveASCII("Font");
//finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
}
/**
* Sets the strings of the subwidgets using the current language.
*/

View File

@@ -51,6 +51,7 @@ public:
public:
void saveSettings() override;
void loadSettings() override;
void resetSettingsToDefaults() override;
private:
void setupConnections();

View File

@@ -341,6 +341,44 @@ void DlgSettingsGeneral::loadSettings()
loadThemes();
}
void DlgSettingsGeneral::resetSettingsToDefaults()
{
ParameterGrp::handle hGrp;
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Units");
//reset "UserSchema" parameter
hGrp->RemoveInt("UserSchema");
//reset "Decimals" parameter
hGrp->RemoveInt("Decimals");
//reset "IgnoreProjectSchema" parameter
hGrp->RemoveBool("IgnoreProjectSchema");
//reset "FracInch" parameter
hGrp->RemoveInt("FracInch");
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
//reset "Theme" parameter
hGrp->RemoveASCII("Theme");
//reset "TiledBackground" parameter
hGrp->RemoveBool("TiledBackground");
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/DockWindows");
//reset "ComboView" parameters
hGrp->GetGroup("ComboView")->RemoveBool("Enabled");
//reset "TreeView" parameters
hGrp->GetGroup("TreeView")->RemoveBool("Enabled");
//reset "PropertyView" parameters
hGrp->GetGroup("PropertyView")->RemoveBool("Enabled");
hGrp = WindowParameter::getDefaultParameter()->GetGroup("General");
//reset "Language" parameter
hGrp->RemoveASCII("Language");
//reset "ToolbarIconSize" parameter
hGrp->RemoveInt("ToolbarIconSize");
//finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
}
void DlgSettingsGeneral::saveThemes()
{
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");

View File

@@ -53,6 +53,7 @@ public:
void saveSettings() override;
void loadSettings() override;
void resetSettingsToDefaults() override;
void saveThemes();
void loadThemes();

View File

@@ -102,6 +102,17 @@ void DlgSettingsMacroImp::loadSettings()
ui->ShortcutCount->onRestore();
}
void DlgSettingsMacroImp::resetSettingsToDefaults()
{
ParameterGrp::handle hGrp;
hGrp = WindowParameter::getDefaultParameter()->GetGroup("RecentMacros");
//reset "ShortcutModifiers" parameter
hGrp->RemoveASCII("ShortcutModifiers");
//finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
}
/**
* Sets the strings of the subwidgets using the current language.
*/

View File

@@ -46,6 +46,7 @@ public:
void saveSettings() override;
void loadSettings() override;
void resetSettingsToDefaults() override;
protected:
void changeEvent(QEvent *e) override;

View File

@@ -208,6 +208,39 @@ void DlgSettingsNavigation::loadSettings()
}
void DlgSettingsNavigation::resetSettingsToDefaults()
{
ParameterGrp::handle hGrp;
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View");
//reset "NavigationStyle" parameter
hGrp->RemoveASCII("NavigationStyle");
//reset "OrbitStyle" parameter
hGrp->RemoveInt("OrbitStyle");
//reset "RotationMode" parameter
hGrp->RemoveInt("RotationMode");
//reset "ShowNaviCube" parameter
hGrp->RemoveBool("ShowNaviCube");
//reset "ShowRotationCenter" parameter
hGrp->RemoveBool("ShowRotationCenter");
//reset "UseNavigationAnimations" parameter
hGrp->RemoveBool("UseNavigationAnimations");
//reset "NewDocumentCameraOrientation" parameter
hGrp->RemoveASCII("NewDocumentCameraOrientation");
hGrp = hGrp->GetGroup("Custom");
//reset "Q0" parameter
hGrp->RemoveFloat("Q0");
//reset "Q1" parameter
hGrp->RemoveFloat("Q1");
//reset "Q2" parameter
hGrp->RemoveFloat("Q2");
//reset "Q3" parameter
hGrp->RemoveFloat("Q3");
//finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
}
void DlgSettingsNavigation::onMouseButtonClicked()
{
QDialog dlg(this);

View File

@@ -49,6 +49,7 @@ public:
void saveSettings() override;
void loadSettings() override;
void resetSettingsToDefaults() override;
private:
void onMouseButtonClicked();

View File

@@ -351,6 +351,37 @@ void DlgSettingsWorkbenchesImp::loadSettings()
}
}
void DlgSettingsWorkbenchesImp::resetSettingsToDefaults()
{
ParameterGrp::handle hGrp;
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Workbenches");
//reset "Ordered" parameter
hGrp->RemoveASCII("Ordered");
//reset "Disabled" parameter
hGrp->RemoveASCII("Disabled");
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/General");
//reset "BackgroundAutoloadModules" parameter
hGrp->RemoveASCII("BackgroundAutoloadModules");
//reset "AutoloadModule" parameter
hGrp->RemoveASCII("AutoloadModule");
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
//reset "WSPosition" parameter
hGrp->RemoveASCII("WSPosition");
if (ui->WorkbenchSelectorPosition->currentIndex() != WorkbenchSwitcher::getIndex()) {
requireRestart();
}
//finally reset all the parameters associated to Gui::Pref* widgets
PreferencePage::resetSettingsToDefaults();
hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View");
if (ui->CheckBox_WbByTab->isChecked() != hGrp->GetBool("SaveWBbyTab", 0)) {
requireRestart();
}
}
/**
Build the list of unloaded workbenches.
*/
@@ -590,7 +621,16 @@ void DlgSettingsWorkbenchesImp::onStartWbChanged(int index)
void DlgSettingsWorkbenchesImp::onWbSelectorChanged(int index)
{
Q_UNUSED(index);
requireRestart();
/**
* TODO: move the following code somewhere else so that the restart request isn't asked
* everytime the WorkbenchSwitcher is changed but only when the value that will be saved in
* the parameter is actually different from the current one.
* The code, as is now, will request the restart even if the use selects again the same value
* that is already saved in the parameters
*/
if (ui->WorkbenchSelectorPosition->currentIndex() != WorkbenchSwitcher::getIndex()) {
requireRestart();
}
}
void DlgSettingsWorkbenchesImp::onWbByTabToggled(bool val)

View File

@@ -29,7 +29,8 @@
#include <Gui/PropertyPage.h>
#include <memory>
namespace Gui::Dialog {
namespace Gui{
namespace Dialog {
class Ui_DlgSettingsWorkbenches;
/**
@@ -47,6 +48,7 @@ public:
void saveSettings() override;
void loadSettings() override;
void resetSettingsToDefaults() override;
static QStringList getEnabledWorkbenches();
static QStringList getDisabledWorkbenches();
@@ -78,6 +80,7 @@ private:
std::unique_ptr<Ui_DlgSettingsWorkbenches> ui;
};
} // namespace Gui::Dialog
} // namespace Dialog
} // namespace Gui
#endif // GUI_DIALOG_DLGSETTINGSWORKBENCHES_IMP_H