diff --git a/src/Gui/CMakeLists.txt b/src/Gui/CMakeLists.txt index 7d62108de2..db6de80e69 100644 --- a/src/Gui/CMakeLists.txt +++ b/src/Gui/CMakeLists.txt @@ -574,6 +574,7 @@ SET(Dialog_Settings_CPP_SRCS PreferencePages/DlgSettingsTheme.cpp PreferencePages/DlgSettingsViewColor.cpp PreferencePages/DlgSettingsWorkbenchesImp.cpp + PreferencePages/DlgSettingsUI.cpp ) SET(Dialog_Settings_HPP_SRCS DlgOnlineHelpImp.h @@ -594,6 +595,7 @@ SET(Dialog_Settings_HPP_SRCS PreferencePages/DlgSettingsTheme.h PreferencePages/DlgSettingsViewColor.h PreferencePages/DlgSettingsWorkbenchesImp.h + PreferencePages/DlgSettingsUI.h ) SET(Dialog_Settings_SRCS ${Dialog_Settings_CPP_SRCS} @@ -1035,7 +1037,6 @@ SET(Widget_CPP_SRCS WidgetFactory.cpp Widgets.cpp Window.cpp - ViewParams.cpp ) SET(Widget_HPP_SRCS FileDialog.h @@ -1056,7 +1057,6 @@ SET(Widget_HPP_SRCS WidgetFactory.h Widgets.h Window.h - ViewParams.h ) SET(Widget_SRCS ${Widget_CPP_SRCS} @@ -1067,11 +1067,15 @@ SOURCE_GROUP("Widget" FILES ${Widget_SRCS}) SET(Params_CPP_SRCS TreeParams.cpp OverlayParams.cpp + ParamHandler.cpp + ViewParams.cpp ) SET(Params_HPP_SRCS TreeParams.h OverlayParams.h + ParamHandler.cpp + ViewParams.h ) SET(Params_SRCS diff --git a/src/Gui/ParamHandler.cpp b/src/Gui/ParamHandler.cpp new file mode 100644 index 0000000000..97776c7783 --- /dev/null +++ b/src/Gui/ParamHandler.cpp @@ -0,0 +1,61 @@ + /**************************************************************************** + * Copyright (c) 2023 Zheng Lei (realthunder) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include "ParamHandler.h" + +using namespace Gui; + +ParamHandlers::ParamHandlers() +{ +} + +ParamHandlers::~ParamHandlers() +{ +} + +void ParamHandlers::addHandler(const ParamKey &key, const std::shared_ptr &handler) +{ + if (handlers.empty()) { + conn = App::GetApplication().GetUserParameter().signalParamChanged.connect( + [this](ParameterGrp *Param, ParameterGrp::ParamType, const char *Name, const char *) { + if (!Param || !Name) + return; + auto it = handlers.find(ParamKey(Param, Name)); + if (it != handlers.end() && it->second->onChange(&it->first)) { + pendings.insert(it->second); + timer.start(100); + } + }); + + timer.setSingleShot(true); + QObject::connect(&timer, &QTimer::timeout, [this]() { + for (const auto &v : pendings) { + v->onTimer(); + } + pendings.clear(); + }); + } + handlers[key] = handler; +} diff --git a/src/Gui/ParamHandler.h b/src/Gui/ParamHandler.h new file mode 100644 index 0000000000..2c692483d5 --- /dev/null +++ b/src/Gui/ParamHandler.h @@ -0,0 +1,231 @@ + /**************************************************************************** + * Copyright (c) 2023 Zheng Lei (realthunder) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#ifndef GUI_PARAM_HANDLER_H +#define GUI_PARAM_HANDLER_H + +#include +#include +#include +#include + +#include +#include +#include + +namespace Gui { + +/// Structure for storing a parameter key and its path to be used in std::map +struct GuiExport ParamKey { + ParameterGrp::handle hGrp; + const char *key; + + ParamKey(const char *path, const char *key) + :hGrp(App::GetApplication().GetUserParameter().GetGroup(path)) + ,key(key) + {} + + ParamKey(ParameterGrp *h, const char *key) + :hGrp(h), key(key) + {} + + bool operator < (const ParamKey &other) const { + if (hGrp < other.hGrp) + return true; + if (hGrp > other.hGrp) + return false; + return strcmp(key, other.key) < 0; + } +}; + +/// Helper class to handle parameter change +class GuiExport ParamHandler { +public: + virtual ~ParamHandler() {} + + /** Called when the corresponding parameter key changes + * @param key: the parameter key + * @return Returns true if the handler needs to be delay triggered by a timer + */ + virtual bool onChange(const ParamKey *key) = 0; + /// Called in delay triggered + virtual void onTimer() {} +}; + +/// Template class for a non-delayed parameter handler +template +class ParamHandlerT : public ParamHandler +{ +public: + ParamHandlerT(Func f) + :func(f) + {} + + bool onChange(const ParamKey *key) override { + func(key); + return false; + } + +private: + Func func; +}; + +/// Template class for a delayed parameter handler +template +class ParamDelayedHandlerT : public ParamHandler +{ +public: + ParamDelayedHandlerT(Func f) + :func(f) + {} + + bool onChange(const ParamKey *) override { + return true; + } + + void onTimer() override { + func(); + } + +private: + Func func; +}; + +// Helper class to manage handlers of a list of parameters. +// +// The handlers are stored in a map from ParamKey to shared pointer to a +// ParamHandler. The same handler can be registered with multiple keys. When +// the registered parameter key is changed, the manager will call the +// registered handler function ParamHandler::onChange(). If it returns True, +// then the handler will be appended to a queue to be invoked later by a timer +// to avoid repeatitive processing on change of multiple keys. +// +// The handler manager is meant to be initiated by some static function, e.g. +// DlgSettingsGeneral::attachObserver(). It is intended to be one and only +// place of handling changes of the given set of parameters, regardless of +// whether the changes are coming from direct editing through parameter editor, +// user code changing of parameters, changing preference dialog, or loading a +// preference pack. +// +class GuiExport ParamHandlers { +public: + ParamHandlers(); + virtual ~ParamHandlers(); + + void addHandler(const ParamKey &key, const std::shared_ptr &handler); + + void addHandler(const char *path, const char *key, const std::shared_ptr &handler) { + addHandler(ParamKey(path, key), handler); + } + + void addHandler(ParameterGrp *hGrp, const char *key, const std::shared_ptr &handler) { + addHandler(ParamKey(hGrp, key), handler); + } + + void addHandler(const std::vector &keys, const std::shared_ptr &handler) { + for (const auto &key : keys) + addHandler(key, handler); + } + + void addHandler(const char *path, const std::vector &keys, const std::shared_ptr &handler) { + for (const auto &key : keys) + addHandler(path, key, handler); + } + + void addHandler(ParameterGrp *hGrp, const std::vector &keys, const std::shared_ptr &handler) { + for (const auto &key : keys) + addHandler(hGrp, key, handler); + } + + template + std::shared_ptr addHandler(const char *path, const char *key, Func func) { + std::shared_ptr handler(new ParamHandlerT(func)); + addHandler(path, key, handler); + return handler; + } + + template + std::shared_ptr addHandler(ParameterGrp *hGrp, const char *key, Func func) { + std::shared_ptr handler(new ParamHandlerT(func)); + addHandler(hGrp, key, handler); + return handler; + } + + template + std::shared_ptr addDelayedHandler(const char *path, const char *key, Func func) { + auto hGrp = App::GetApplication().GetUserParameter().GetGroup(path); + auto wrap = [hGrp, func]() { + func(hGrp); + }; + std::shared_ptr handler(new ParamDelayedHandlerT(wrap)); + addHandler(hGrp, key, handler); + return handler; + } + + template + std::shared_ptr addDelayedHandler(ParameterGrp *hGrp, const char *key, Func func) { + auto wrap = [hGrp, func]() { + func(hGrp); + }; + std::shared_ptr handler(new ParamDelayedHandlerT(wrap)); + addHandler(hGrp, key, handler); + return handler; + } + + template + std::shared_ptr addDelayedHandler(const char *path, + const std::vector &keys, + Func func) + { + auto hGrp = App::GetApplication().GetUserParameter().GetGroup(path); + auto wrap = [hGrp, func]() { + func(hGrp); + }; + std::shared_ptr handler(new ParamDelayedHandlerT(wrap)); + for (const auto &key : keys) + addHandler(ParamKey(hGrp, key), handler); + return handler; + } + + template + std::shared_ptr addDelayedHandler(ParameterGrp::handle hGrp, + const std::vector &keys, + Func func) + { + auto wrap = [hGrp, func]() { + func(hGrp); + }; + std::shared_ptr handler(new ParamDelayedHandlerT(wrap)); + for (const auto &key : keys) + addHandler(ParamKey(hGrp, key), handler); + return handler; + } + +protected: + std::map> handlers; + std::set> pendings; + boost::signals2::scoped_connection conn; + QTimer timer; +}; + +} // namespace Gui + +#endif // GUI_PARAM_HANDLER_H diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp index f513244d34..4d0e342a92 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp @@ -47,12 +47,15 @@ #include #include #include +#include +#include #include #include #include "DlgSettingsGeneral.h" #include "ui_DlgSettingsGeneral.h" +using namespace Gui; using namespace Gui::Dialog; namespace fs = boost::filesystem; using namespace Base; @@ -655,4 +658,34 @@ void DlgSettingsGeneral::onThemeChanged(int index) { themeChanged = true; } +/////////////////////////////////////////////////////////// +namespace { + +class ApplyDockWidget: public ParamHandler { +public: + bool onChange(const ParamKey *) override { + OverlayManager::instance()->reload(OverlayManager::ReloadMode::ReloadPause); + return true; + } + + void onTimer() override { + getMainWindow()->initDockWindows(true); + OverlayManager::instance()->reload(OverlayManager::ReloadMode::ReloadResume); + } +}; + +} // anonymous namespace + +void DlgSettingsGeneral::attachObserver() +{ + static ParamHandlers handlers; + + auto hDockWindows = App::GetApplication().GetUserParameter().GetGroup("BaseApp/Preferences/DockWindows"); + auto applyDockWidget = std::shared_ptr(new ApplyDockWidget); + handlers.addHandler(ParamKey(hDockWindows->GetGroup("ComboView"), "Enabled"), applyDockWidget); + handlers.addHandler(ParamKey(hDockWindows->GetGroup("TreeView"), "Enabled"), applyDockWidget); + handlers.addHandler(ParamKey(hDockWindows->GetGroup("PropertyView"), "Enabled"), applyDockWidget); + handlers.addHandler(ParamKey(hDockWindows->GetGroup("DAGView"), "Enabled"), applyDockWidget); +} + #include "moc_DlgSettingsGeneral.cpp" diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.h b/src/Gui/PreferencePages/DlgSettingsGeneral.h index 6713250165..ad55fc2fd1 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.h +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.h @@ -57,6 +57,8 @@ public: void saveThemes(); void loadThemes(); + static void attachObserver(); + protected: void changeEvent(QEvent *event) override; diff --git a/src/Gui/PreferencePages/DlgSettingsTheme.cpp b/src/Gui/PreferencePages/DlgSettingsTheme.cpp index 06f6ab9e61..be59dcb476 100644 --- a/src/Gui/PreferencePages/DlgSettingsTheme.cpp +++ b/src/Gui/PreferencePages/DlgSettingsTheme.cpp @@ -26,6 +26,7 @@ #endif #include +#include #include "DlgSettingsTheme.h" #include "ui_DlgSettingsTheme.h" @@ -42,14 +43,8 @@ using namespace Gui::Dialog; DlgSettingsTheme::DlgSettingsTheme(QWidget* parent) : PreferencePage(parent) , ui(new Ui_DlgSettingsTheme) - , styleSheetChanged(false) { ui->setupUi(this); - - connect(ui->styleSheetsCombobox, qOverload(&QComboBox::activated), this, &DlgSettingsTheme::onStyleSheetChanged); - connect(ui->ThemeAccentColor1, &Gui::PrefColorButton::changed, this, &DlgSettingsTheme::onColorChanged); - connect(ui->ThemeAccentColor2, &Gui::PrefColorButton::changed, this, &DlgSettingsTheme::onColorChanged); - connect(ui->ThemeAccentColor3, &Gui::PrefColorButton::changed, this, &DlgSettingsTheme::onColorChanged); } /** @@ -62,9 +57,8 @@ void DlgSettingsTheme::saveSettings() ui->ThemeAccentColor1->onSave(); ui->ThemeAccentColor2->onSave(); ui->ThemeAccentColor3->onSave(); - - if (styleSheetChanged) - saveStyleSheet(); + ui->StyleSheets->onSave(); + ui->OverlayStyleSheets->onSave(); } void DlgSettingsTheme::loadSettings() @@ -76,50 +70,50 @@ void DlgSettingsTheme::loadSettings() loadStyleSheet(); } -void DlgSettingsTheme::saveStyleSheet() -{ - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow"); - - QVariant sheet = ui->styleSheetsCombobox->itemData(ui->styleSheetsCombobox->currentIndex()); - hGrp->SetASCII("StyleSheet", (const char*)sheet.toByteArray()); - bool tiledBackground = hGrp->GetBool("TiledBackground", false); - Application::Instance->setStyleSheet(sheet.toString(), tiledBackground); - - styleSheetChanged = false; -} - void DlgSettingsTheme::loadStyleSheet() { - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow"); + populateStylesheets("StyleSheet", "qss", ui->StyleSheets, "No style sheet"); + populateStylesheets("OverlayActiveStyleSheet", "overlay", ui->OverlayStyleSheets, "Auto"); +} +void DlgSettingsTheme::populateStylesheets(const char *key, + const char *path, + PrefComboBox *combo, + const char *def, + QStringList filter) +{ + auto hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow"); // List all .qss/.css files QMap cssFiles; QDir dir; - QStringList filter; - filter << QString::fromLatin1("*.qss"); - filter << QString::fromLatin1("*.css"); + if (filter.isEmpty()) { + filter << QStringLiteral("*.qss"); + filter << QStringLiteral("*.css"); + } + QFileInfoList fileNames; // read from user, resource and built-in directory - QStringList qssPaths = QDir::searchPaths(QString::fromLatin1("qss")); - for (const auto& qssPath : qssPaths) { - dir.setPath(qssPath); - QFileInfoList fileNames = dir.entryInfoList(filter, QDir::Files, QDir::Name); - for (const auto& fileName : qAsConst(fileNames)) { - if (cssFiles.find(fileName.baseName()) == cssFiles.end()) { - cssFiles[fileName.baseName()] = fileName.fileName(); + QStringList qssPaths = QDir::searchPaths(QString::fromUtf8(path)); + for (QStringList::iterator it = qssPaths.begin(); it != qssPaths.end(); ++it) { + dir.setPath(*it); + fileNames = dir.entryInfoList(filter, QDir::Files, QDir::Name); + for (QFileInfoList::iterator jt = fileNames.begin(); jt != fileNames.end(); ++jt) { + if (cssFiles.find(jt->baseName()) == cssFiles.end()) { + cssFiles[jt->baseName()] = jt->fileName(); } } } + combo->clear(); + // now add all unique items - ui->styleSheetsCombobox->clear(); - ui->styleSheetsCombobox->addItem(tr("No style sheet"), QString::fromLatin1("")); + combo->addItem(tr(def), QStringLiteral("")); for (QMap::iterator it = cssFiles.begin(); it != cssFiles.end(); ++it) { - ui->styleSheetsCombobox->addItem(it.key(), it.value()); + combo->addItem(it.key(), it.value()); } - QString selectedStyleSheet = QString::fromLatin1(hGrp->GetASCII("StyleSheet").c_str()); - int index = ui->styleSheetsCombobox->findData(selectedStyleSheet); + QString selectedStyleSheet = QString::fromUtf8(hGrp->GetASCII(key).c_str()); + int index = combo->findData(selectedStyleSheet); // might be an absolute path name if (index < 0 && !selectedStyleSheet.isEmpty()) { @@ -131,24 +125,13 @@ void DlgSettingsTheme::loadStyleSheet() } else { selectedStyleSheet = fi.absoluteFilePath(); - ui->styleSheetsCombobox->addItem(fi.baseName(), selectedStyleSheet); + combo->addItem(fi.baseName(), selectedStyleSheet); } - - index = ui->styleSheetsCombobox->findData(selectedStyleSheet); } } - if (index > -1) - ui->styleSheetsCombobox->setCurrentIndex(index); -} - -void DlgSettingsTheme::onStyleSheetChanged(int index) { - Q_UNUSED(index); - styleSheetChanged = true; -} - -void DlgSettingsTheme::onColorChanged() { - styleSheetChanged = true; + combo->setCurrentIndex(index); + combo->onRestore(); } /** @@ -158,12 +141,35 @@ void DlgSettingsTheme::changeEvent(QEvent *e) { if (e->type() == QEvent::LanguageChange) { ui->retranslateUi(this); + loadStyleSheet(); } else { QWidget::changeEvent(e); } } +namespace { + +void applyStyleSheet(ParameterGrp *hGrp) +{ + auto sheet = hGrp->GetASCII("StyleSheet"); + bool tiledBG = hGrp->GetBool("TiledBackground", false); + Gui::Application::Instance->setStyleSheet(QString::fromUtf8(sheet.c_str()), tiledBG); +} + +} // anonymous namespace + +void DlgSettingsTheme::attachObserver() +{ + static ParamHandlers handlers; + + auto handler = handlers.addDelayedHandler("BaseApp/Preferences/MainWindow", + {"StyleSheet", "TiledBackground"}, + applyStyleSheet); + handlers.addHandler("BaseApp/Preferences/Themes", + {"ThemeAccentColor1", "ThemeAccentColor2", "ThemeAccentColor2"}, + handler); +} #include "moc_DlgSettingsTheme.cpp" diff --git a/src/Gui/PreferencePages/DlgSettingsTheme.h b/src/Gui/PreferencePages/DlgSettingsTheme.h index 5cc7200fa2..1fd42409ef 100644 --- a/src/Gui/PreferencePages/DlgSettingsTheme.h +++ b/src/Gui/PreferencePages/DlgSettingsTheme.h @@ -28,6 +28,9 @@ #include namespace Gui { + +class PrefComboBox; + namespace Dialog { class Ui_DlgSettingsTheme; @@ -46,19 +49,21 @@ public: void saveSettings() override; void loadSettings() override; - void saveStyleSheet(); void loadStyleSheet(); + static void attachObserver(); + protected: void changeEvent(QEvent *e) override; -protected Q_SLOTS: - void onStyleSheetChanged(int index); - void onColorChanged(); + void populateStylesheets(const char *key, + const char *path, + PrefComboBox *combo, + const char *def, + QStringList filter = QStringList()); private: std::unique_ptr ui; - bool styleSheetChanged; }; } // namespace Dialog diff --git a/src/Gui/PreferencePages/DlgSettingsTheme.ui b/src/Gui/PreferencePages/DlgSettingsTheme.ui index b95b1602dd..219c54daab 100644 --- a/src/Gui/PreferencePages/DlgSettingsTheme.ui +++ b/src/Gui/PreferencePages/DlgSettingsTheme.ui @@ -15,7 +15,7 @@ - + This page let you customize your current theme. The offered settings are optional for theme developers so they may or may not have an effect in your current theme. @@ -28,8 +28,38 @@ + + + + Style sheet how user interface will look like + + + MainWindow + + + StyleSheet + + + + + + + + + + Accent color 2 + + + + + + + Accent color 3 + + + - + Accent color 1 @@ -61,10 +91,10 @@ - - + + - Accent color 2 + Style sheet (advanced): @@ -94,13 +124,6 @@ - - - - Accent color 3 - - - @@ -127,18 +150,23 @@ - - + + - Style sheet (advanced): + Overlay style sheet: - - - - Apply manually .qss Qt Stylesheets. This is the legacy way that was used to customize the interface. -You can now use Theme to get a full customization of the interface. + + + + MainWindow + + + OverlayActiveStyleSheet + + + @@ -185,6 +213,11 @@ You can now use Theme to get a full customization of the interface. Gui::ColorButton
Gui/PrefWidgets.h
+ + Gui::PrefComboBox + QComboBox +
Gui/PrefWidgets.h
+
diff --git a/src/Gui/PreferencePages/DlgSettingsUI.cpp b/src/Gui/PreferencePages/DlgSettingsUI.cpp new file mode 100644 index 0000000000..d4bead92fd --- /dev/null +++ b/src/Gui/PreferencePages/DlgSettingsUI.cpp @@ -0,0 +1,698 @@ +/**************************************************************************** + * Copyright (c) 2020 Zheng Lei (realthunder) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ****************************************************************************/ + +#include "PreCompiled.h" + +#include +#include + +/*[[[cog +import DlgSettingsUI +DlgSettingsUI.define() +]]]*/ + +// Auto generated code (Tools/params_utils.py:567) +#ifndef _PreComp_ +# include +# include +# include +# include +# include +# include +#endif +#include +#include +// Auto generated code (Tools/params_utils.py:589) +#include "Gui/PreferencePages/DlgSettingsUI.h" +using namespace Gui::Dialog; +/* TRANSLATOR Gui::Dialog::DlgSettingsUI */ + +// Auto generated code (Tools/params_utils.py:598) +DlgSettingsUI::DlgSettingsUI(QWidget* parent) + : PreferencePage( parent ) +{ + + auto layout = new QVBoxLayout(this); + + + // Auto generated code (Tools/params_utils.py:420) + groupTreeview = new QGroupBox(this); + layout->addWidget(groupTreeview); + auto layoutHorizTreeview = new QHBoxLayout(groupTreeview); + auto layoutTreeview = new QGridLayout(); + layoutHorizTreeview->addLayout(layoutTreeview); + layoutHorizTreeview->addStretch(); + + // Auto generated code (Tools/params_utils.py:433) + labelItemBackground = new QLabel(this); + layoutTreeview->addWidget(labelItemBackground, 0, 0); + ItemBackground = new Gui::PrefColorButton(this); + layoutTreeview->addWidget(ItemBackground, 0, 1); + ItemBackground->setPackedColor(Gui::TreeParams::defaultItemBackground()); + ItemBackground->setEntryName("ItemBackground"); + ItemBackground->setParamGrpPath("TreeView"); + ItemBackground->setAllowTransparency(true); + + // Auto generated code (Tools/params_utils.py:433) + labelItemBackgroundPadding = new QLabel(this); + layoutTreeview->addWidget(labelItemBackgroundPadding, 1, 0); + ItemBackgroundPadding = new Gui::PrefSpinBox(this); + layoutTreeview->addWidget(ItemBackgroundPadding, 1, 1); + ItemBackgroundPadding->setValue(Gui::TreeParams::defaultItemBackgroundPadding()); + ItemBackgroundPadding->setEntryName("ItemBackgroundPadding"); + ItemBackgroundPadding->setParamGrpPath("TreeView"); + // Auto generated code (Tools/params_utils.py:1134) + ItemBackgroundPadding->setMinimum(0); + ItemBackgroundPadding->setMaximum(100); + ItemBackgroundPadding->setSingleStep(1); + + // Auto generated code (Tools/params_utils.py:433) + ResizableColumn = new Gui::PrefCheckBox(this); + layoutTreeview->addWidget(ResizableColumn, 2, 0); + ResizableColumn->setChecked(Gui::TreeParams::defaultResizableColumn()); + ResizableColumn->setEntryName("ResizableColumn"); + ResizableColumn->setParamGrpPath("TreeView"); + + // Auto generated code (Tools/params_utils.py:433) + CheckBoxesSelection = new Gui::PrefCheckBox(this); + layoutTreeview->addWidget(CheckBoxesSelection, 3, 0); + CheckBoxesSelection->setChecked(Gui::TreeParams::defaultCheckBoxesSelection()); + CheckBoxesSelection->setEntryName("CheckBoxesSelection"); + CheckBoxesSelection->setParamGrpPath("TreeView"); + + // Auto generated code (Tools/params_utils.py:433) + HideColumn = new Gui::PrefCheckBox(this); + layoutTreeview->addWidget(HideColumn, 4, 0); + HideColumn->setChecked(Gui::TreeParams::defaultHideColumn()); + HideColumn->setEntryName("HideColumn"); + HideColumn->setParamGrpPath("TreeView"); + + // Auto generated code (Tools/params_utils.py:433) + HideScrollBar = new Gui::PrefCheckBox(this); + layoutTreeview->addWidget(HideScrollBar, 5, 0); + HideScrollBar->setChecked(Gui::TreeParams::defaultHideScrollBar()); + HideScrollBar->setEntryName("HideScrollBar"); + HideScrollBar->setParamGrpPath("TreeView"); + + // Auto generated code (Tools/params_utils.py:433) + HideHeaderView = new Gui::PrefCheckBox(this); + layoutTreeview->addWidget(HideHeaderView, 6, 0); + HideHeaderView->setChecked(Gui::TreeParams::defaultHideHeaderView()); + HideHeaderView->setEntryName("HideHeaderView"); + HideHeaderView->setParamGrpPath("TreeView"); + + // Auto generated code (Tools/params_utils.py:433) + labelIconSize = new QLabel(this); + layoutTreeview->addWidget(labelIconSize, 7, 0); + IconSize = new Gui::PrefSpinBox(this); + layoutTreeview->addWidget(IconSize, 7, 1); + IconSize->setValue(Gui::TreeParams::defaultIconSize()); + IconSize->setEntryName("IconSize"); + IconSize->setParamGrpPath("TreeView"); + + // Auto generated code (Tools/params_utils.py:433) + labelFontSize = new QLabel(this); + layoutTreeview->addWidget(labelFontSize, 8, 0); + FontSize = new Gui::PrefSpinBox(this); + layoutTreeview->addWidget(FontSize, 8, 1); + FontSize->setValue(Gui::TreeParams::defaultFontSize()); + FontSize->setEntryName("FontSize"); + FontSize->setParamGrpPath("TreeView"); + + // Auto generated code (Tools/params_utils.py:433) + labelItemSpacing = new QLabel(this); + layoutTreeview->addWidget(labelItemSpacing, 9, 0); + ItemSpacing = new Gui::PrefSpinBox(this); + layoutTreeview->addWidget(ItemSpacing, 9, 1); + ItemSpacing->setValue(Gui::TreeParams::defaultItemSpacing()); + ItemSpacing->setEntryName("ItemSpacing"); + ItemSpacing->setParamGrpPath("TreeView"); + + + // Auto generated code (Tools/params_utils.py:420) + groupOverlay = new QGroupBox(this); + layout->addWidget(groupOverlay); + auto layoutHorizOverlay = new QHBoxLayout(groupOverlay); + auto layoutOverlay = new QGridLayout(); + layoutHorizOverlay->addLayout(layoutOverlay); + layoutHorizOverlay->addStretch(); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayHideTabBar = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayHideTabBar, 0, 0); + DockOverlayHideTabBar->setChecked(Gui::OverlayParams::defaultDockOverlayHideTabBar()); + DockOverlayHideTabBar->setEntryName("DockOverlayHideTabBar"); + DockOverlayHideTabBar->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayHidePropertyViewScrollBar = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayHidePropertyViewScrollBar, 1, 0); + DockOverlayHidePropertyViewScrollBar->setChecked(Gui::OverlayParams::defaultDockOverlayHidePropertyViewScrollBar()); + DockOverlayHidePropertyViewScrollBar->setEntryName("DockOverlayHidePropertyViewScrollBar"); + DockOverlayHidePropertyViewScrollBar->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayAutoView = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayAutoView, 2, 0); + DockOverlayAutoView->setChecked(Gui::OverlayParams::defaultDockOverlayAutoView()); + DockOverlayAutoView->setEntryName("DockOverlayAutoView"); + DockOverlayAutoView->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayAutoMouseThrough = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayAutoMouseThrough, 3, 0); + DockOverlayAutoMouseThrough->setChecked(Gui::OverlayParams::defaultDockOverlayAutoMouseThrough()); + DockOverlayAutoMouseThrough->setEntryName("DockOverlayAutoMouseThrough"); + DockOverlayAutoMouseThrough->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayWheelPassThrough = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayWheelPassThrough, 4, 0); + DockOverlayWheelPassThrough->setChecked(Gui::OverlayParams::defaultDockOverlayWheelPassThrough()); + DockOverlayWheelPassThrough->setEntryName("DockOverlayWheelPassThrough"); + DockOverlayWheelPassThrough->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayWheelDelay = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayWheelDelay, 5, 0); + DockOverlayWheelDelay = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayWheelDelay, 5, 1); + DockOverlayWheelDelay->setValue(Gui::OverlayParams::defaultDockOverlayWheelDelay()); + DockOverlayWheelDelay->setEntryName("DockOverlayWheelDelay"); + DockOverlayWheelDelay->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayWheelDelay->setMinimum(0); + DockOverlayWheelDelay->setMaximum(99999); + DockOverlayWheelDelay->setSingleStep(1); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayAlphaRadius = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayAlphaRadius, 6, 0); + DockOverlayAlphaRadius = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayAlphaRadius, 6, 1); + DockOverlayAlphaRadius->setValue(Gui::OverlayParams::defaultDockOverlayAlphaRadius()); + DockOverlayAlphaRadius->setEntryName("DockOverlayAlphaRadius"); + DockOverlayAlphaRadius->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayAlphaRadius->setMinimum(1); + DockOverlayAlphaRadius->setMaximum(100); + DockOverlayAlphaRadius->setSingleStep(1); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayCheckNaviCube = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayCheckNaviCube, 7, 0); + DockOverlayCheckNaviCube->setChecked(Gui::OverlayParams::defaultDockOverlayCheckNaviCube()); + DockOverlayCheckNaviCube->setEntryName("DockOverlayCheckNaviCube"); + DockOverlayCheckNaviCube->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintTriggerSize = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintTriggerSize, 8, 0); + DockOverlayHintTriggerSize = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintTriggerSize, 8, 1); + DockOverlayHintTriggerSize->setValue(Gui::OverlayParams::defaultDockOverlayHintTriggerSize()); + DockOverlayHintTriggerSize->setEntryName("DockOverlayHintTriggerSize"); + DockOverlayHintTriggerSize->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintTriggerSize->setMinimum(1); + DockOverlayHintTriggerSize->setMaximum(100); + DockOverlayHintTriggerSize->setSingleStep(1); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintSize = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintSize, 9, 0); + DockOverlayHintSize = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintSize, 9, 1); + DockOverlayHintSize->setValue(Gui::OverlayParams::defaultDockOverlayHintSize()); + DockOverlayHintSize->setEntryName("DockOverlayHintSize"); + DockOverlayHintSize->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintSize->setMinimum(1); + DockOverlayHintSize->setMaximum(100); + DockOverlayHintSize->setSingleStep(1); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintLeftOffset = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintLeftOffset, 10, 0); + DockOverlayHintLeftOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintLeftOffset, 10, 1); + DockOverlayHintLeftOffset->setValue(Gui::OverlayParams::defaultDockOverlayHintLeftOffset()); + DockOverlayHintLeftOffset->setEntryName("DockOverlayHintLeftOffset"); + DockOverlayHintLeftOffset->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintLeftOffset->setMinimum(0); + DockOverlayHintLeftOffset->setMaximum(10000); + DockOverlayHintLeftOffset->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintLeftLength = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintLeftLength, 11, 0); + DockOverlayHintLeftLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintLeftLength, 11, 1); + DockOverlayHintLeftLength->setValue(Gui::OverlayParams::defaultDockOverlayHintLeftLength()); + DockOverlayHintLeftLength->setEntryName("DockOverlayHintLeftLength"); + DockOverlayHintLeftLength->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintLeftLength->setMinimum(0); + DockOverlayHintLeftLength->setMaximum(10000); + DockOverlayHintLeftLength->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintRightOffset = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintRightOffset, 12, 0); + DockOverlayHintRightOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintRightOffset, 12, 1); + DockOverlayHintRightOffset->setValue(Gui::OverlayParams::defaultDockOverlayHintRightOffset()); + DockOverlayHintRightOffset->setEntryName("DockOverlayHintRightOffset"); + DockOverlayHintRightOffset->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintRightOffset->setMinimum(0); + DockOverlayHintRightOffset->setMaximum(10000); + DockOverlayHintRightOffset->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintRightLength = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintRightLength, 13, 0); + DockOverlayHintRightLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintRightLength, 13, 1); + DockOverlayHintRightLength->setValue(Gui::OverlayParams::defaultDockOverlayHintRightLength()); + DockOverlayHintRightLength->setEntryName("DockOverlayHintRightLength"); + DockOverlayHintRightLength->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintRightLength->setMinimum(0); + DockOverlayHintRightLength->setMaximum(10000); + DockOverlayHintRightLength->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintTopOffset = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintTopOffset, 14, 0); + DockOverlayHintTopOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintTopOffset, 14, 1); + DockOverlayHintTopOffset->setValue(Gui::OverlayParams::defaultDockOverlayHintTopOffset()); + DockOverlayHintTopOffset->setEntryName("DockOverlayHintTopOffset"); + DockOverlayHintTopOffset->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintTopOffset->setMinimum(0); + DockOverlayHintTopOffset->setMaximum(10000); + DockOverlayHintTopOffset->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintTopLength = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintTopLength, 15, 0); + DockOverlayHintTopLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintTopLength, 15, 1); + DockOverlayHintTopLength->setValue(Gui::OverlayParams::defaultDockOverlayHintTopLength()); + DockOverlayHintTopLength->setEntryName("DockOverlayHintTopLength"); + DockOverlayHintTopLength->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintTopLength->setMinimum(0); + DockOverlayHintTopLength->setMaximum(10000); + DockOverlayHintTopLength->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintBottomOffset = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintBottomOffset, 16, 0); + DockOverlayHintBottomOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintBottomOffset, 16, 1); + DockOverlayHintBottomOffset->setValue(Gui::OverlayParams::defaultDockOverlayHintBottomOffset()); + DockOverlayHintBottomOffset->setEntryName("DockOverlayHintBottomOffset"); + DockOverlayHintBottomOffset->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintBottomOffset->setMinimum(0); + DockOverlayHintBottomOffset->setMaximum(10000); + DockOverlayHintBottomOffset->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintBottomLength = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintBottomLength, 17, 0); + DockOverlayHintBottomLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintBottomLength, 17, 1); + DockOverlayHintBottomLength->setValue(Gui::OverlayParams::defaultDockOverlayHintBottomLength()); + DockOverlayHintBottomLength->setEntryName("DockOverlayHintBottomLength"); + DockOverlayHintBottomLength->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintBottomLength->setMinimum(0); + DockOverlayHintBottomLength->setMaximum(10000); + DockOverlayHintBottomLength->setSingleStep(10); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayHintTabBar = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayHintTabBar, 18, 0); + DockOverlayHintTabBar->setChecked(Gui::OverlayParams::defaultDockOverlayHintTabBar()); + DockOverlayHintTabBar->setEntryName("DockOverlayHintTabBar"); + DockOverlayHintTabBar->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayHintDelay = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayHintDelay, 19, 0); + DockOverlayHintDelay = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintDelay, 19, 1); + DockOverlayHintDelay->setValue(Gui::OverlayParams::defaultDockOverlayHintDelay()); + DockOverlayHintDelay->setEntryName("DockOverlayHintDelay"); + DockOverlayHintDelay->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayHintDelay->setMinimum(0); + DockOverlayHintDelay->setMaximum(1000); + DockOverlayHintDelay->setSingleStep(100); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlaySplitterHandleTimeout = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlaySplitterHandleTimeout, 20, 0); + DockOverlaySplitterHandleTimeout = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlaySplitterHandleTimeout, 20, 1); + DockOverlaySplitterHandleTimeout->setValue(Gui::OverlayParams::defaultDockOverlaySplitterHandleTimeout()); + DockOverlaySplitterHandleTimeout->setEntryName("DockOverlaySplitterHandleTimeout"); + DockOverlaySplitterHandleTimeout->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlaySplitterHandleTimeout->setMinimum(0); + DockOverlaySplitterHandleTimeout->setMaximum(99999); + DockOverlaySplitterHandleTimeout->setSingleStep(100); + + // Auto generated code (Tools/params_utils.py:433) + DockOverlayActivateOnHover = new Gui::PrefCheckBox(this); + layoutOverlay->addWidget(DockOverlayActivateOnHover, 21, 0); + DockOverlayActivateOnHover->setChecked(Gui::OverlayParams::defaultDockOverlayActivateOnHover()); + DockOverlayActivateOnHover->setEntryName("DockOverlayActivateOnHover"); + DockOverlayActivateOnHover->setParamGrpPath("View"); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayDelay = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayDelay, 22, 0); + DockOverlayDelay = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayDelay, 22, 1); + DockOverlayDelay->setValue(Gui::OverlayParams::defaultDockOverlayDelay()); + DockOverlayDelay->setEntryName("DockOverlayDelay"); + DockOverlayDelay->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayDelay->setMinimum(0); + DockOverlayDelay->setMaximum(5000); + DockOverlayDelay->setSingleStep(100); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayAnimationDuration = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayAnimationDuration, 23, 0); + DockOverlayAnimationDuration = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayAnimationDuration, 23, 1); + DockOverlayAnimationDuration->setValue(Gui::OverlayParams::defaultDockOverlayAnimationDuration()); + DockOverlayAnimationDuration->setEntryName("DockOverlayAnimationDuration"); + DockOverlayAnimationDuration->setParamGrpPath("View"); + // Auto generated code (Tools/params_utils.py:1134) + DockOverlayAnimationDuration->setMinimum(0); + DockOverlayAnimationDuration->setMaximum(5000); + DockOverlayAnimationDuration->setSingleStep(100); + + // Auto generated code (Tools/params_utils.py:433) + labelDockOverlayAnimationCurve = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayAnimationCurve, 24, 0); + DockOverlayAnimationCurve = new Gui::PrefComboBox(this); + layoutOverlay->addWidget(DockOverlayAnimationCurve, 24, 1); + DockOverlayAnimationCurve->setEntryName("DockOverlayAnimationCurve"); + DockOverlayAnimationCurve->setParamGrpPath("View"); + // Auto generated code (Gui/OverlayParams.py:94) + for (const auto &item : OverlayParams::AnimationCurveTypes) + DockOverlayAnimationCurve->addItem(item); + DockOverlayAnimationCurve->setCurrentIndex(Gui::OverlayParams::defaultDockOverlayAnimationCurve()); + layout->addItem(new QSpacerItem(40, 20, QSizePolicy::Fixed, QSizePolicy::Expanding)); + retranslateUi(); + // Auto generated code (Tools/params_utils.py:607) + init(); +} + +// Auto generated code (Tools/params_utils.py:614) +DlgSettingsUI::~DlgSettingsUI() +{ +} + +// Auto generated code (Tools/params_utils.py:622) +void DlgSettingsUI::saveSettings() +{ + // Auto generated code (Tools/params_utils.py:461) + ItemBackground->onSave(); + ItemBackgroundPadding->onSave(); + ResizableColumn->onSave(); + CheckBoxesSelection->onSave(); + HideColumn->onSave(); + HideScrollBar->onSave(); + HideHeaderView->onSave(); + IconSize->onSave(); + FontSize->onSave(); + ItemSpacing->onSave(); + DockOverlayHideTabBar->onSave(); + DockOverlayHidePropertyViewScrollBar->onSave(); + DockOverlayAutoView->onSave(); + DockOverlayAutoMouseThrough->onSave(); + DockOverlayWheelPassThrough->onSave(); + DockOverlayWheelDelay->onSave(); + DockOverlayAlphaRadius->onSave(); + DockOverlayCheckNaviCube->onSave(); + DockOverlayHintTriggerSize->onSave(); + DockOverlayHintSize->onSave(); + DockOverlayHintLeftOffset->onSave(); + DockOverlayHintLeftLength->onSave(); + DockOverlayHintRightOffset->onSave(); + DockOverlayHintRightLength->onSave(); + DockOverlayHintTopOffset->onSave(); + DockOverlayHintTopLength->onSave(); + DockOverlayHintBottomOffset->onSave(); + DockOverlayHintBottomLength->onSave(); + DockOverlayHintTabBar->onSave(); + DockOverlayHintDelay->onSave(); + DockOverlaySplitterHandleTimeout->onSave(); + DockOverlayActivateOnHover->onSave(); + DockOverlayDelay->onSave(); + DockOverlayAnimationDuration->onSave(); + DockOverlayAnimationCurve->onSave(); +} + +// Auto generated code (Tools/params_utils.py:631) +void DlgSettingsUI::loadSettings() +{ + // Auto generated code (Tools/params_utils.py:449) + ItemBackground->onRestore(); + ItemBackgroundPadding->onRestore(); + ResizableColumn->onRestore(); + CheckBoxesSelection->onRestore(); + HideColumn->onRestore(); + HideScrollBar->onRestore(); + HideHeaderView->onRestore(); + IconSize->onRestore(); + FontSize->onRestore(); + ItemSpacing->onRestore(); + DockOverlayHideTabBar->onRestore(); + DockOverlayHidePropertyViewScrollBar->onRestore(); + DockOverlayAutoView->onRestore(); + DockOverlayAutoMouseThrough->onRestore(); + DockOverlayWheelPassThrough->onRestore(); + DockOverlayWheelDelay->onRestore(); + DockOverlayAlphaRadius->onRestore(); + DockOverlayCheckNaviCube->onRestore(); + DockOverlayHintTriggerSize->onRestore(); + DockOverlayHintSize->onRestore(); + DockOverlayHintLeftOffset->onRestore(); + DockOverlayHintLeftLength->onRestore(); + DockOverlayHintRightOffset->onRestore(); + DockOverlayHintRightLength->onRestore(); + DockOverlayHintTopOffset->onRestore(); + DockOverlayHintTopLength->onRestore(); + DockOverlayHintBottomOffset->onRestore(); + DockOverlayHintBottomLength->onRestore(); + DockOverlayHintTabBar->onRestore(); + DockOverlayHintDelay->onRestore(); + DockOverlaySplitterHandleTimeout->onRestore(); + DockOverlayActivateOnHover->onRestore(); + DockOverlayDelay->onRestore(); + DockOverlayAnimationDuration->onRestore(); + DockOverlayAnimationCurve->onRestore(); +} + +// Auto generated code (Tools/params_utils.py:640) +void DlgSettingsUI::retranslateUi() +{ + setWindowTitle(QObject::tr("UI")); + groupTreeview->setTitle(QObject::tr("Tree view")); + ItemBackground->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docItemBackground())); + labelItemBackground->setText(QObject::tr("Item background color")); + labelItemBackground->setToolTip(ItemBackground->toolTip()); + ItemBackgroundPadding->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docItemBackgroundPadding())); + labelItemBackgroundPadding->setText(QObject::tr("Item background padding")); + labelItemBackgroundPadding->setToolTip(ItemBackgroundPadding->toolTip()); + ResizableColumn->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docResizableColumn())); + ResizableColumn->setText(QObject::tr("Resizable columns")); + CheckBoxesSelection->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docCheckBoxesSelection())); + CheckBoxesSelection->setText(QObject::tr("Show item checkbox")); + HideColumn->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideColumn())); + HideColumn->setText(QObject::tr("Hide extra column")); + HideScrollBar->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideScrollBar())); + HideScrollBar->setText(QObject::tr("Hide scroll bar")); + HideHeaderView->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideHeaderView())); + HideHeaderView->setText(QObject::tr("Hide header")); + IconSize->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docIconSize())); + labelIconSize->setText(QObject::tr("IconSize")); + labelIconSize->setToolTip(IconSize->toolTip()); + FontSize->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docFontSize())); + labelFontSize->setText(QObject::tr("FontSize")); + labelFontSize->setToolTip(FontSize->toolTip()); + ItemSpacing->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docItemSpacing())); + labelItemSpacing->setText(QObject::tr("ItemSpacing")); + labelItemSpacing->setToolTip(ItemSpacing->toolTip()); + groupOverlay->setTitle(QObject::tr("Overlay")); + DockOverlayHideTabBar->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHideTabBar())); + DockOverlayHideTabBar->setText(QObject::tr("Hide tab bar")); + DockOverlayHidePropertyViewScrollBar->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHidePropertyViewScrollBar())); + DockOverlayHidePropertyViewScrollBar->setText(QObject::tr("Hide property view scroll bar")); + DockOverlayAutoView->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayAutoView())); + DockOverlayAutoView->setText(QObject::tr("Auto hide in non 3D view")); + DockOverlayAutoMouseThrough->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayAutoMouseThrough())); + DockOverlayAutoMouseThrough->setText(QObject::tr("Auto mouse pass through")); + DockOverlayWheelPassThrough->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayWheelPassThrough())); + DockOverlayWheelPassThrough->setText(QObject::tr("Auto mouse wheel pass through")); + DockOverlayWheelDelay->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayWheelDelay())); + labelDockOverlayWheelDelay->setText(QObject::tr("Delay mouse wheel pass through (ms)")); + labelDockOverlayWheelDelay->setToolTip(DockOverlayWheelDelay->toolTip()); + DockOverlayAlphaRadius->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayAlphaRadius())); + labelDockOverlayAlphaRadius->setText(QObject::tr("Alpha test radius")); + labelDockOverlayAlphaRadius->setToolTip(DockOverlayAlphaRadius->toolTip()); + DockOverlayCheckNaviCube->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayCheckNaviCube())); + DockOverlayCheckNaviCube->setText(QObject::tr("Check Navigation Cube")); + DockOverlayHintTriggerSize->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintTriggerSize())); + labelDockOverlayHintTriggerSize->setText(QObject::tr("Hint trigger size")); + labelDockOverlayHintTriggerSize->setToolTip(DockOverlayHintTriggerSize->toolTip()); + DockOverlayHintSize->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintSize())); + labelDockOverlayHintSize->setText(QObject::tr("Hint width")); + labelDockOverlayHintSize->setToolTip(DockOverlayHintSize->toolTip()); + DockOverlayHintLeftOffset->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintLeftOffset())); + labelDockOverlayHintLeftOffset->setText(QObject::tr("Left panel hint offset")); + labelDockOverlayHintLeftOffset->setToolTip(DockOverlayHintLeftOffset->toolTip()); + DockOverlayHintLeftLength->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintLeftLength())); + labelDockOverlayHintLeftLength->setText(QObject::tr("Left panel hint length")); + labelDockOverlayHintLeftLength->setToolTip(DockOverlayHintLeftLength->toolTip()); + DockOverlayHintRightOffset->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintRightOffset())); + labelDockOverlayHintRightOffset->setText(QObject::tr("Right panel hint offset")); + labelDockOverlayHintRightOffset->setToolTip(DockOverlayHintRightOffset->toolTip()); + DockOverlayHintRightLength->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintRightLength())); + labelDockOverlayHintRightLength->setText(QObject::tr("Right panel hint length")); + labelDockOverlayHintRightLength->setToolTip(DockOverlayHintRightLength->toolTip()); + DockOverlayHintTopOffset->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintTopOffset())); + labelDockOverlayHintTopOffset->setText(QObject::tr("Top panel hint offset")); + labelDockOverlayHintTopOffset->setToolTip(DockOverlayHintTopOffset->toolTip()); + DockOverlayHintTopLength->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintTopLength())); + labelDockOverlayHintTopLength->setText(QObject::tr("Top panel hint length")); + labelDockOverlayHintTopLength->setToolTip(DockOverlayHintTopLength->toolTip()); + DockOverlayHintBottomOffset->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintBottomOffset())); + labelDockOverlayHintBottomOffset->setText(QObject::tr("Bottom panel hint offset")); + labelDockOverlayHintBottomOffset->setToolTip(DockOverlayHintBottomOffset->toolTip()); + DockOverlayHintBottomLength->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintBottomLength())); + labelDockOverlayHintBottomLength->setText(QObject::tr("Bottom panel hint length")); + labelDockOverlayHintBottomLength->setToolTip(DockOverlayHintBottomLength->toolTip()); + DockOverlayHintTabBar->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintTabBar())); + DockOverlayHintTabBar->setText(QObject::tr("Hint show tab bar")); + DockOverlayHintDelay->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayHintDelay())); + labelDockOverlayHintDelay->setText(QObject::tr("Hint delay (ms)")); + labelDockOverlayHintDelay->setToolTip(DockOverlayHintDelay->toolTip()); + DockOverlaySplitterHandleTimeout->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlaySplitterHandleTimeout())); + labelDockOverlaySplitterHandleTimeout->setText(QObject::tr("Splitter auto hide delay (ms)")); + labelDockOverlaySplitterHandleTimeout->setToolTip(DockOverlaySplitterHandleTimeout->toolTip()); + DockOverlayActivateOnHover->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayActivateOnHover())); + DockOverlayActivateOnHover->setText(QObject::tr("Activate on hover")); + DockOverlayDelay->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayDelay())); + labelDockOverlayDelay->setText(QObject::tr("Layout delay (ms)")); + labelDockOverlayDelay->setToolTip(DockOverlayDelay->toolTip()); + DockOverlayAnimationDuration->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayAnimationDuration())); + labelDockOverlayAnimationDuration->setText(QObject::tr("Animation duration (ms)")); + labelDockOverlayAnimationDuration->setToolTip(DockOverlayAnimationDuration->toolTip()); + DockOverlayAnimationCurve->setToolTip(QApplication::translate("OverlayParams", Gui::OverlayParams::docDockOverlayAnimationCurve())); + labelDockOverlayAnimationCurve->setText(QObject::tr("Animation curve type")); + labelDockOverlayAnimationCurve->setToolTip(DockOverlayAnimationCurve->toolTip()); +} + +// Auto generated code (Tools/params_utils.py:657) +void DlgSettingsUI::changeEvent(QEvent *e) +{ + if (e->type() == QEvent::LanguageChange) { + retranslateUi(); + } + QWidget::changeEvent(e); +} + +// Auto generated code (Tools/params_utils.py:670) +#include "moc_DlgSettingsUI.cpp" +//[[[end]]] + +// ----------------------------------------------------------------------------------- +// user code start + +void DlgSettingsUI::init() +{ + timer = new QTimer(this); + timer->setSingleShot(true); + + animator1 = new QPropertyAnimation(this, "offset1", this); + QObject::connect(animator1, &QPropertyAnimation::stateChanged, [this]() { + if (animator1->state() != QAbstractAnimation::Running) + timer->start(1000); + }); + + QObject::connect(DockOverlayAnimationCurve, QOverload::of(&QComboBox::currentIndexChanged), + this, &DlgSettingsUI::onCurveChange); + + QObject::connect(timer, &QTimer::timeout, [=]() { + if (animator1->state() != QAbstractAnimation::Running) { + this->setOffset1(1); + this->a1 = this->b1 = 0; + } + }); +} + +qreal DlgSettingsUI::offset1() const +{ + return this->t1; +} + +void DlgSettingsUI::setOffset1(qreal t) +{ + if (t == this->t1) + return; + this->t1 = t; + QLabel *label = this->labelDockOverlayAnimationCurve; + if (this->a1 == this->b1) { + this->a1 = label->x(); + QPoint pos(width(), 0); + this->b1 = width() - label->fontMetrics().boundingRect(label->text()).width() - 5; + } + label->move(this->a1 * (1-t) + this->b1 * t, label->y()); +} + +void DlgSettingsUI::onCurveChange(int index) +{ + if (sender() != DockOverlayAnimationCurve) + return; + double value = DockOverlayAnimationDuration->value()*2; + auto animator = animator1; + animator->setStartValue(0.0); + animator->setEndValue(1.0); + animator->setEasingCurve((QEasingCurve::Type)index); + animator->setDuration(value); + animator->start(); +} + +// user code end +// ----------------------------------------------------------------------------------- diff --git a/src/Gui/PreferencePages/DlgSettingsUI.h b/src/Gui/PreferencePages/DlgSettingsUI.h new file mode 100644 index 0000000000..d479ae73d3 --- /dev/null +++ b/src/Gui/PreferencePages/DlgSettingsUI.h @@ -0,0 +1,168 @@ +/**************************************************************************** + * Copyright (c) 2020 Zheng Lei (realthunder) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ****************************************************************************/ + +#ifndef GUI_DIALOG_DLGSETTINGSUI_H +#define GUI_DIALOG_DLGSETTINGSUI_H + +class QTimer; +class QPropertyAnimation; + +/*[[[cog +import DlgSettingsUI +DlgSettingsUI.declare_begin() +]]]*/ + +// Auto generated code (Tools/params_utils.py:482) +#include +#include +// Auto generated code (Tools/params_utils.py:489) +class QLabel; +class QGroupBox; + +namespace Gui { +namespace Dialog { +/** Preference dialog for various UI related settings + + * This class is auto generated by Gui/PreferencePages/DlgSettingsUI.py. Modify that file + * instead of this one, if you want to make any change. You need + * to install Cog Python package for code generation: + * @code + * pip install cogapp + * @endcode + * + * Once modified, you can regenerate the header and the source file, + * @code + * python3 -m cogapp -r Gui/PreferencePages/DlgSettingsUI.h Gui/PreferencePages/DlgSettingsUI.cpp + * @endcode + */ +class DlgSettingsUI : public Gui::Dialog::PreferencePage +{ + Q_OBJECT + +public: + DlgSettingsUI( QWidget* parent = 0 ); + ~DlgSettingsUI(); + + void saveSettings(); + void loadSettings(); + void retranslateUi(); + +protected: + void changeEvent(QEvent *e); + +private: + + // Auto generated code (Tools/params_utils.py:400) + QGroupBox * groupTreeview = nullptr; + QLabel *labelItemBackground = nullptr; + Gui::PrefColorButton *ItemBackground = nullptr; + QLabel *labelItemBackgroundPadding = nullptr; + Gui::PrefSpinBox *ItemBackgroundPadding = nullptr; + Gui::PrefCheckBox *ResizableColumn = nullptr; + Gui::PrefCheckBox *CheckBoxesSelection = nullptr; + Gui::PrefCheckBox *HideColumn = nullptr; + Gui::PrefCheckBox *HideScrollBar = nullptr; + Gui::PrefCheckBox *HideHeaderView = nullptr; + QLabel *labelIconSize = nullptr; + Gui::PrefSpinBox *IconSize = nullptr; + QLabel *labelFontSize = nullptr; + Gui::PrefSpinBox *FontSize = nullptr; + QLabel *labelItemSpacing = nullptr; + Gui::PrefSpinBox *ItemSpacing = nullptr; + + // Auto generated code (Tools/params_utils.py:400) + QGroupBox * groupOverlay = nullptr; + Gui::PrefCheckBox *DockOverlayHideTabBar = nullptr; + Gui::PrefCheckBox *DockOverlayHidePropertyViewScrollBar = nullptr; + Gui::PrefCheckBox *DockOverlayAutoView = nullptr; + Gui::PrefCheckBox *DockOverlayAutoMouseThrough = nullptr; + Gui::PrefCheckBox *DockOverlayWheelPassThrough = nullptr; + QLabel *labelDockOverlayWheelDelay = nullptr; + Gui::PrefSpinBox *DockOverlayWheelDelay = nullptr; + QLabel *labelDockOverlayAlphaRadius = nullptr; + Gui::PrefSpinBox *DockOverlayAlphaRadius = nullptr; + Gui::PrefCheckBox *DockOverlayCheckNaviCube = nullptr; + QLabel *labelDockOverlayHintTriggerSize = nullptr; + Gui::PrefSpinBox *DockOverlayHintTriggerSize = nullptr; + QLabel *labelDockOverlayHintSize = nullptr; + Gui::PrefSpinBox *DockOverlayHintSize = nullptr; + QLabel *labelDockOverlayHintLeftOffset = nullptr; + Gui::PrefSpinBox *DockOverlayHintLeftOffset = nullptr; + QLabel *labelDockOverlayHintLeftLength = nullptr; + Gui::PrefSpinBox *DockOverlayHintLeftLength = nullptr; + QLabel *labelDockOverlayHintRightOffset = nullptr; + Gui::PrefSpinBox *DockOverlayHintRightOffset = nullptr; + QLabel *labelDockOverlayHintRightLength = nullptr; + Gui::PrefSpinBox *DockOverlayHintRightLength = nullptr; + QLabel *labelDockOverlayHintTopOffset = nullptr; + Gui::PrefSpinBox *DockOverlayHintTopOffset = nullptr; + QLabel *labelDockOverlayHintTopLength = nullptr; + Gui::PrefSpinBox *DockOverlayHintTopLength = nullptr; + QLabel *labelDockOverlayHintBottomOffset = nullptr; + Gui::PrefSpinBox *DockOverlayHintBottomOffset = nullptr; + QLabel *labelDockOverlayHintBottomLength = nullptr; + Gui::PrefSpinBox *DockOverlayHintBottomLength = nullptr; + Gui::PrefCheckBox *DockOverlayHintTabBar = nullptr; + QLabel *labelDockOverlayHintDelay = nullptr; + Gui::PrefSpinBox *DockOverlayHintDelay = nullptr; + QLabel *labelDockOverlaySplitterHandleTimeout = nullptr; + Gui::PrefSpinBox *DockOverlaySplitterHandleTimeout = nullptr; + Gui::PrefCheckBox *DockOverlayActivateOnHover = nullptr; + QLabel *labelDockOverlayDelay = nullptr; + Gui::PrefSpinBox *DockOverlayDelay = nullptr; + QLabel *labelDockOverlayAnimationDuration = nullptr; + Gui::PrefSpinBox *DockOverlayAnimationDuration = nullptr; + QLabel *labelDockOverlayAnimationCurve = nullptr; + Gui::PrefComboBox *DockOverlayAnimationCurve = nullptr; +//[[[end]]] + + // ----------------------------------------------------------------------------------- + // user code start + + Q_PROPERTY(qreal offset1 READ offset1 WRITE setOffset1 DESIGNABLE true SCRIPTABLE true) + qreal offset1() const; + void setOffset1(qreal); + +private: + void init(); + void onCurveChange(int index); + +private: + QTimer *timer; + QPropertyAnimation *animator1; + qreal t1 = 0; + qreal a1 = 0, b1 = 0; + + // user code end + // ----------------------------------------------------------------------------------- + +/*[[[cog +import DlgSettingsUI +DlgSettingsUI.declare_end() +]]]*/ + +// Auto generated code (Tools/params_utils.py:536) +}; +} // namespace Dialog +} // namespace Gui +//[[[end]]] +#endif // GUI_DIALOG_DLGSETTINGSUI_H diff --git a/src/Gui/PreferencePages/DlgSettingsUI.py b/src/Gui/PreferencePages/DlgSettingsUI.py new file mode 100644 index 0000000000..e2a7522dbc --- /dev/null +++ b/src/Gui/PreferencePages/DlgSettingsUI.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +# *************************************************************************** +# * Copyright (c) 2022 Zheng Lei (realthunder) * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** +'''Auto code generator for preference page of Display/UI +''' +import cog, sys +from os import sys, path + +# import Tools/params_utils.py +sys.path.append(path.join(path.dirname( + path.dirname(path.dirname(path.abspath(__file__)))), 'Tools')) +import params_utils +from params_utils import auto_comment + +sys.path.append(path.join(path.dirname( + path.dirname(path.dirname(path.abspath(__file__)))), 'Gui')) +import OverlayParams, TreeParams + +Title = 'UI' +NameSpace = 'Gui' +ClassName = 'DlgSettingsUI' +ClassDoc = 'Preference dialog for various UI related settings' +UserInit = 'init();' + +_OverlayParams = { param.name : param for param in OverlayParams.Params } +_TreeParams = { param.name : param for param in TreeParams.Params } + +ParamGroup = ( + ('Tree view', [_TreeParams[name] for name in ( + 'ItemBackground', + 'ItemBackgroundPadding', + 'ResizableColumn', + 'CheckBoxesSelection', + 'HideColumn', + 'HideScrollBar', + 'HideHeaderView', + 'IconSize', + 'FontSize', + 'ItemSpacing', + )]), + + ('Overlay', [_OverlayParams[name] for name in ( + 'DockOverlayHideTabBar', + 'DockOverlayHidePropertyViewScrollBar', + 'DockOverlayAutoView', + 'DockOverlayAutoMouseThrough', + 'DockOverlayWheelPassThrough', + 'DockOverlayWheelDelay', + 'DockOverlayAlphaRadius', + 'DockOverlayCheckNaviCube', + 'DockOverlayHintTriggerSize', + 'DockOverlayHintSize', + 'DockOverlayHintLeftOffset', + 'DockOverlayHintLeftLength', + 'DockOverlayHintRightOffset', + 'DockOverlayHintRightLength', + 'DockOverlayHintTopOffset', + 'DockOverlayHintTopLength', + 'DockOverlayHintBottomOffset', + 'DockOverlayHintBottomLength', + 'DockOverlayHintTabBar', + 'DockOverlayHintDelay', + 'DockOverlaySplitterHandleTimeout', + 'DockOverlayActivateOnHover', + 'DockOverlayDelay', + 'DockOverlayAnimationDuration', + 'DockOverlayAnimationCurve', + )]), +) + +def declare_begin(): + params_utils.preference_dialog_declare_begin(sys.modules[__name__]) + +def declare_end(): + params_utils.preference_dialog_declare_end(sys.modules[__name__]) + +def define(): + params_utils.preference_dialog_define(sys.modules[__name__]) diff --git a/src/Gui/resource.cpp b/src/Gui/resource.cpp index b6b6c5facd..3ec05feb00 100644 --- a/src/Gui/resource.cpp +++ b/src/Gui/resource.cpp @@ -44,7 +44,7 @@ #include "PreferencePages/DlgSettingsTheme.h" #include "PreferencePages/DlgSettingsViewColor.h" #include "PreferencePages/DlgSettingsWorkbenchesImp.h" - +#include "PreferencePages/DlgSettingsUI.h" #include "DlgToolbarsImp.h" #include "DlgActionsImp.h" @@ -67,15 +67,18 @@ WidgetFactorySupplier::WidgetFactorySupplier() // // new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","General") ); + DlgSettingsGeneral::attachObserver(); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","General") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); + new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); + DlgSettingsTheme::attachObserver(); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Workbenches") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject", "Python")); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject", "Python"));