From 05aaf0ed48bf81007bf85684eb6a07425bc56323 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Thu, 27 Jun 2024 00:29:35 +0200 Subject: [PATCH] Preferences: Reorganize UI and Theme pages in Display group This changes current "Display/UI" pages to "Display/Advenced" as most of settings there were pretty technical. These settings are not removed as it is hard to decide which one should be removed and which one should stay and we are too close to UI freeze. Settings that should be obviously kept were moved to new "Display/UI" section which now includes also options from previous "Display/Theme". Fixes: #14412 --- src/Gui/CMakeLists.txt | 12 +- .../PreferencePages/DlgSettingsAdvanced.cpp | 545 +++++++++++ src/Gui/PreferencePages/DlgSettingsAdvanced.h | 152 ++++ ...lgSettingsUI.py => DlgSettingsAdvanced.py} | 21 +- src/Gui/PreferencePages/DlgSettingsTheme.cpp | 175 ---- src/Gui/PreferencePages/DlgSettingsTheme.h | 72 -- src/Gui/PreferencePages/DlgSettingsTheme.ui | 224 ----- src/Gui/PreferencePages/DlgSettingsUI.cpp | 860 ++++-------------- src/Gui/PreferencePages/DlgSettingsUI.h | 203 ++--- src/Gui/PreferencePages/DlgSettingsUI.ui | 530 +++++++++++ src/Gui/TreeParams.py | 2 +- src/Gui/resource.cpp | 10 +- 12 files changed, 1477 insertions(+), 1329 deletions(-) create mode 100644 src/Gui/PreferencePages/DlgSettingsAdvanced.cpp create mode 100644 src/Gui/PreferencePages/DlgSettingsAdvanced.h rename src/Gui/PreferencePages/{DlgSettingsUI.py => DlgSettingsAdvanced.py} (86%) delete mode 100644 src/Gui/PreferencePages/DlgSettingsTheme.cpp delete mode 100644 src/Gui/PreferencePages/DlgSettingsTheme.h delete mode 100644 src/Gui/PreferencePages/DlgSettingsTheme.ui create mode 100644 src/Gui/PreferencePages/DlgSettingsUI.ui diff --git a/src/Gui/CMakeLists.txt b/src/Gui/CMakeLists.txt index 760ab0e5d8..e02bd98546 100644 --- a/src/Gui/CMakeLists.txt +++ b/src/Gui/CMakeLists.txt @@ -353,7 +353,7 @@ SET(Gui_UIC_SRCS PreferencePages/DlgSettingsPythonConsole.ui PreferencePages/DlgSettingsReportView.ui PreferencePages/DlgSettingsSelection.ui - PreferencePages/DlgSettingsTheme.ui + PreferencePages/DlgSettingsUI.ui PreferencePages/DlgSettingsViewColor.ui PreferencePages/DlgSettingsWorkbenches.ui DlgCheckableMessageBox.ui @@ -610,10 +610,10 @@ SET(Dialog_Settings_CPP_SRCS PreferencePages/DlgSettingsPythonConsole.cpp PreferencePages/DlgSettingsReportView.cpp PreferencePages/DlgSettingsSelection.cpp - PreferencePages/DlgSettingsTheme.cpp + PreferencePages/DlgSettingsUI.cpp PreferencePages/DlgSettingsViewColor.cpp PreferencePages/DlgSettingsWorkbenchesImp.cpp - PreferencePages/DlgSettingsUI.cpp + PreferencePages/DlgSettingsAdvanced.cpp ) SET(Dialog_Settings_HPP_SRCS DlgOnlineHelpImp.h @@ -632,10 +632,10 @@ SET(Dialog_Settings_HPP_SRCS PreferencePages/DlgSettingsPythonConsole.h PreferencePages/DlgSettingsReportView.h PreferencePages/DlgSettingsSelection.h - PreferencePages/DlgSettingsTheme.h + PreferencePages/DlgSettingsUI.h PreferencePages/DlgSettingsViewColor.h PreferencePages/DlgSettingsWorkbenchesImp.h - PreferencePages/DlgSettingsUI.h + PreferencePages/DlgSettingsAdvanced.h ) SET(Dialog_Settings_SRCS ${Dialog_Settings_CPP_SRCS} @@ -656,7 +656,7 @@ SET(Dialog_Settings_SRCS PreferencePages/DlgSettingsPythonConsole.ui PreferencePages/DlgSettingsReportView.ui PreferencePages/DlgSettingsSelection.ui - PreferencePages/DlgSettingsTheme.ui + PreferencePages/DlgSettingsUI.ui PreferencePages/DlgSettingsViewColor.ui PreferencePages/DlgSettingsWorkbenches.ui ) diff --git a/src/Gui/PreferencePages/DlgSettingsAdvanced.cpp b/src/Gui/PreferencePages/DlgSettingsAdvanced.cpp new file mode 100644 index 0000000000..ca70006b74 --- /dev/null +++ b/src/Gui/PreferencePages/DlgSettingsAdvanced.cpp @@ -0,0 +1,545 @@ +/**************************************************************************** + * 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 DlgSettingsAdvanced +DlgSettingsAdvanced.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/DlgSettingsAdvanced.h" +using namespace Gui::Dialog; +/* TRANSLATOR Gui::Dialog::DlgSettingsAdvanced */ + +// Auto generated code (Tools/params_utils.py:598) +DlgSettingsAdvanced::DlgSettingsAdvanced(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) + labelItemBackgroundPadding = new QLabel(this); + layoutTreeview->addWidget(labelItemBackgroundPadding, 0, 0); + ItemBackgroundPadding = new Gui::PrefSpinBox(this); + layoutTreeview->addWidget(ItemBackgroundPadding, 0, 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) + labelFontSize = new QLabel(this); + layoutTreeview->addWidget(labelFontSize, 1, 0); + FontSize = new Gui::PrefSpinBox(this); + layoutTreeview->addWidget(FontSize, 1, 1); + FontSize->setValue(Gui::TreeParams::defaultFontSize()); + FontSize->setEntryName("FontSize"); + FontSize->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) + labelDockOverlayWheelDelay = new QLabel(this); + layoutOverlay->addWidget(labelDockOverlayWheelDelay, 0, 0); + DockOverlayWheelDelay = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayWheelDelay, 0, 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, 1, 0); + DockOverlayAlphaRadius = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayAlphaRadius, 1, 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, 2, 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, 3, 0); + DockOverlayHintTriggerSize = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintTriggerSize, 3, 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, 4, 0); + DockOverlayHintSize = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintSize, 4, 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, 5, 0); + DockOverlayHintLeftOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintLeftOffset, 5, 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, 6, 0); + DockOverlayHintLeftLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintLeftLength, 6, 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, 7, 0); + DockOverlayHintRightOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintRightOffset, 7, 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, 8, 0); + DockOverlayHintRightLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintRightLength, 8, 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, 9, 0); + DockOverlayHintTopOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintTopOffset, 9, 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, 10, 0); + DockOverlayHintTopLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintTopLength, 10, 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, 11, 0); + DockOverlayHintBottomOffset = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintBottomOffset, 11, 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, 12, 0); + DockOverlayHintBottomLength = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintBottomLength, 12, 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, 13, 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, 14, 0); + DockOverlayHintDelay = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayHintDelay, 14, 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, 15, 0); + DockOverlaySplitterHandleTimeout = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlaySplitterHandleTimeout, 15, 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, 16, 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, 17, 0); + DockOverlayDelay = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayDelay, 17, 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, 18, 0); + DockOverlayAnimationDuration = new Gui::PrefSpinBox(this); + layoutOverlay->addWidget(DockOverlayAnimationDuration, 18, 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, 19, 0); + DockOverlayAnimationCurve = new Gui::PrefComboBox(this); + layoutOverlay->addWidget(DockOverlayAnimationCurve, 19, 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) +DlgSettingsAdvanced::~DlgSettingsAdvanced() +{ +} + +// Auto generated code (Tools/params_utils.py:622) +void DlgSettingsAdvanced::saveSettings() +{ + // Auto generated code (Tools/params_utils.py:461) + ItemBackgroundPadding->onSave(); + FontSize->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 DlgSettingsAdvanced::loadSettings() +{ + // Auto generated code (Tools/params_utils.py:449) + ItemBackgroundPadding->onRestore(); + FontSize->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 DlgSettingsAdvanced::retranslateUi() +{ + setWindowTitle(QObject::tr("Advanced")); + groupTreeview->setTitle(QObject::tr("Tree view")); + ItemBackgroundPadding->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docItemBackgroundPadding())); + labelItemBackgroundPadding->setText(QObject::tr("Item background padding")); + labelItemBackgroundPadding->setToolTip(ItemBackgroundPadding->toolTip()); + FontSize->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docFontSize())); + labelFontSize->setText(QObject::tr("FontSize")); + labelFontSize->setToolTip(FontSize->toolTip()); + groupOverlay->setTitle(QObject::tr("Overlay")); + 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 DlgSettingsAdvanced::changeEvent(QEvent *e) +{ + if (e->type() == QEvent::LanguageChange) { + retranslateUi(); + } + QWidget::changeEvent(e); +} + +// Auto generated code (Tools/params_utils.py:670) +#include "moc_DlgSettingsAdvanced.cpp" +//[[[end]]] + +// ----------------------------------------------------------------------------------- +// user code start + +void DlgSettingsAdvanced::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, &DlgSettingsAdvanced::onCurveChange); + + QObject::connect(timer, &QTimer::timeout, [this]() { + if (animator1->state() != QAbstractAnimation::Running) { + this->setOffset1(1); + this->a1 = this->b1 = 0; + } + }); +} + +qreal DlgSettingsAdvanced::offset1() const +{ + return this->t1; +} + +void DlgSettingsAdvanced::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 DlgSettingsAdvanced::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/DlgSettingsAdvanced.h b/src/Gui/PreferencePages/DlgSettingsAdvanced.h new file mode 100644 index 0000000000..ac54174c49 --- /dev/null +++ b/src/Gui/PreferencePages/DlgSettingsAdvanced.h @@ -0,0 +1,152 @@ +/**************************************************************************** + * 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_DLGSETTINGSADVANCED_H +#define GUI_DIALOG_DLGSETTINGSADVANCED_H + +class QTimer; +class QPropertyAnimation; + +/*[[[cog +import DlgSettingsAdvanced +DlgSettingsAdvanced.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 advanced UI settings + + * This class is auto generated by Gui/PreferencePages/DlgSettingsAdvanced.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/DlgSettingsAdvanced.h Gui/PreferencePages/DlgSettingsAdvanced.cpp + * @endcode + */ +class DlgSettingsAdvanced : public Gui::Dialog::PreferencePage +{ + Q_OBJECT + +public: + DlgSettingsAdvanced( QWidget* parent = 0 ); + ~DlgSettingsAdvanced(); + + void saveSettings(); + void loadSettings(); + void retranslateUi(); + +protected: + void changeEvent(QEvent *e); + +private: + + // Auto generated code (Tools/params_utils.py:400) + QGroupBox * groupTreeview = nullptr; + QLabel *labelItemBackgroundPadding = nullptr; + Gui::PrefSpinBox *ItemBackgroundPadding = nullptr; + QLabel *labelFontSize = nullptr; + Gui::PrefSpinBox *FontSize = nullptr; + + // Auto generated code (Tools/params_utils.py:400) + QGroupBox * groupOverlay = 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 DlgSettingsAdvanced +DlgSettingsAdvanced.declare_end() +]]]*/ + +// Auto generated code (Tools/params_utils.py:536) +}; +} // namespace Dialog +} // namespace Gui +//[[[end]]] +#endif // GUI_DIALOG_DLGSETTINGSADVANCED_H diff --git a/src/Gui/PreferencePages/DlgSettingsUI.py b/src/Gui/PreferencePages/DlgSettingsAdvanced.py similarity index 86% rename from src/Gui/PreferencePages/DlgSettingsUI.py rename to src/Gui/PreferencePages/DlgSettingsAdvanced.py index 7f81a9a379..ed622e7b46 100644 --- a/src/Gui/PreferencePages/DlgSettingsUI.py +++ b/src/Gui/PreferencePages/DlgSettingsAdvanced.py @@ -34,10 +34,10 @@ sys.path.append(path.join(path.dirname( path.dirname(path.dirname(path.abspath(__file__)))), 'Gui')) import OverlayParams, TreeParams -Title = 'UI' +Title = 'Advanced' NameSpace = 'Gui' -ClassName = 'DlgSettingsUI' -ClassDoc = 'Preference dialog for various UI related settings' +ClassName = 'DlgSettingsAdvanced' +ClassDoc = 'Preference dialog for various advanced UI settings' UserInit = 'init();' _OverlayParams = { param.name : param for param in OverlayParams.Params } @@ -45,25 +45,11 @@ _TreeParams = { param.name : param for param in TreeParams.Params } ParamGroup = ( ('Tree view', [_TreeParams[name] for name in ( - 'ItemBackground', 'ItemBackgroundPadding', - 'ResizableColumn', - 'VisibilityIcon', - 'HideColumn', - 'HideInternalNames', - 'HideScrollBar', - 'HideHeaderView', - 'IconSize', 'FontSize', - 'ItemSpacing', )]), ('Overlay', [_OverlayParams[name] for name in ( - 'DockOverlayHideTabBar', - 'DockOverlayHidePropertyViewScrollBar', - 'DockOverlayAutoView', - 'DockOverlayAutoMouseThrough', - 'DockOverlayWheelPassThrough', 'DockOverlayWheelDelay', 'DockOverlayAlphaRadius', 'DockOverlayCheckNaviCube', @@ -77,7 +63,6 @@ ParamGroup = ( 'DockOverlayHintTopLength', 'DockOverlayHintBottomOffset', 'DockOverlayHintBottomLength', - 'DockOverlayHintTabBar', 'DockOverlayHintDelay', 'DockOverlaySplitterHandleTimeout', 'DockOverlayActivateOnHover', diff --git a/src/Gui/PreferencePages/DlgSettingsTheme.cpp b/src/Gui/PreferencePages/DlgSettingsTheme.cpp deleted file mode 100644 index bb0a6bb330..0000000000 --- a/src/Gui/PreferencePages/DlgSettingsTheme.cpp +++ /dev/null @@ -1,175 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2009 Werner Mayer * - * * - * 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" -#ifndef _PreComp_ -# include -#endif - -#include -#include - -#include "DlgSettingsTheme.h" -#include "ui_DlgSettingsTheme.h" - - -using namespace Gui::Dialog; - -/* TRANSLATOR Gui::Dialog::DlgSettingsTheme */ - -/** - * Constructs a DlgSettingsTheme which is a child of 'parent', with the - * name 'name' and widget flags set to 'f' - */ -DlgSettingsTheme::DlgSettingsTheme(QWidget* parent) - : PreferencePage(parent) - , ui(new Ui_DlgSettingsTheme) -{ - ui->setupUi(this); -} - -/** - * Destroys the object and frees any allocated resources - */ -DlgSettingsTheme::~DlgSettingsTheme() = default; - -void DlgSettingsTheme::saveSettings() -{ - ui->ThemeAccentColor1->onSave(); - ui->ThemeAccentColor2->onSave(); - ui->ThemeAccentColor3->onSave(); - ui->StyleSheets->onSave(); - ui->OverlayStyleSheets->onSave(); -} - -void DlgSettingsTheme::loadSettings() -{ - ui->ThemeAccentColor1->onRestore(); - ui->ThemeAccentColor2->onRestore(); - ui->ThemeAccentColor3->onRestore(); - - loadStyleSheet(); -} - -void DlgSettingsTheme::loadStyleSheet() -{ - 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; - if (filter.isEmpty()) { - filter << QStringLiteral("*.qss"); - filter << QStringLiteral("*.css"); - } - QFileInfoList fileNames; - - // read from user, resource and built-in directory - 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 - combo->addItem(tr(def), QStringLiteral("")); - for (QMap::iterator it = cssFiles.begin(); it != cssFiles.end(); ++it) { - combo->addItem(it.key(), it.value()); - } - - 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()) { - QFileInfo fi(selectedStyleSheet); - if (fi.isAbsolute()) { - QString path = fi.absolutePath(); - if (qssPaths.indexOf(path) >= 0) { - selectedStyleSheet = fi.fileName(); - } - else { - selectedStyleSheet = fi.absoluteFilePath(); - combo->addItem(fi.baseName(), selectedStyleSheet); - } - } - } - - combo->setCurrentIndex(index); - combo->onRestore(); -} - -/** - * Sets the strings of the subwidgets using the current language. - */ -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 deleted file mode 100644 index 1fd42409ef..0000000000 --- a/src/Gui/PreferencePages/DlgSettingsTheme.h +++ /dev/null @@ -1,72 +0,0 @@ -/*************************************************************************** - * Copyright (c) 2009 Werner Mayer * - * * - * 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_DLGSETTINGSTHEME_H -#define GUI_DIALOG_DLGSETTINGSTHEME_H - -#include -#include - -namespace Gui { - -class PrefComboBox; - -namespace Dialog { -class Ui_DlgSettingsTheme; - -/** - * The DlgSettingsTheme class implements a preference page to change theme settings. - * @author Pierre-Louis Boyer - */ -class DlgSettingsTheme : public PreferencePage -{ - Q_OBJECT - -public: - explicit DlgSettingsTheme(QWidget* parent = nullptr); - ~DlgSettingsTheme() override; - - void saveSettings() override; - void loadSettings() override; - - void loadStyleSheet(); - - static void attachObserver(); - -protected: - void changeEvent(QEvent *e) override; - - void populateStylesheets(const char *key, - const char *path, - PrefComboBox *combo, - const char *def, - QStringList filter = QStringList()); - -private: - std::unique_ptr ui; -}; - -} // namespace Dialog -} // namespace Gui - -#endif // GUI_DIALOG_DLGSETTINGSTHEME_H diff --git a/src/Gui/PreferencePages/DlgSettingsTheme.ui b/src/Gui/PreferencePages/DlgSettingsTheme.ui deleted file mode 100644 index c7c85d0419..0000000000 --- a/src/Gui/PreferencePages/DlgSettingsTheme.ui +++ /dev/null @@ -1,224 +0,0 @@ - - - Gui::Dialog::DlgSettingsTheme - - - - 0 - 0 - 405 - 400 - - - - Theme - - - - - - 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. - - - true - - - - - - - - - - - Accent color 1 - - - - - - - - 0 - 0 - - - - This color might be used by your theme to let you customize it. - - - - 85 - 123 - 182 - - - - ThemeAccentColor1 - - - Themes - - - - - - - Accent color 2 - - - - - - - - 0 - 0 - - - - This color might be used by your theme to let you customize it. - - - - 85 - 123 - 182 - - - - ThemeAccentColor2 - - - Themes - - - - - - - Accent color 3 - - - - - - - - 0 - 0 - - - - This color might be used by your theme to let you customize it. - - - - 85 - 123 - 182 - - - - ThemeAccentColor3 - - - Themes - - - - - - - Style sheet (advanced): - - - - - - - Style sheet how user interface will look like - - - MainWindow - - - StyleSheet - - - - - - - - - - Overlay style sheet: - - - - - - - MainWindow - - - OverlayActiveStyleSheet - - - - - - - - - - - - Qt::Horizontal - - - - 183 - 23 - - - - - - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - - Gui::ColorButton - QPushButton -
Gui/Widgets.h
-
- - Gui::PrefColorButton - 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 index 72a1035de9..7774259798 100644 --- a/src/Gui/PreferencePages/DlgSettingsUI.cpp +++ b/src/Gui/PreferencePages/DlgSettingsUI.cpp @@ -1,709 +1,213 @@ -/**************************************************************************** - * 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 * - * * - ****************************************************************************/ +/*************************************************************************** + * Copyright (c) 2009 Werner Mayer * + * * + * 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 +# include #endif -#include -#include -// Auto generated code (Tools/params_utils.py:589) -#include "Gui/PreferencePages/DlgSettingsUI.h" + +#include +#include + +#include "DlgSettingsUI.h" +#include "ui_DlgSettingsUI.h" + + using namespace Gui::Dialog; + /* TRANSLATOR Gui::Dialog::DlgSettingsUI */ -// Auto generated code (Tools/params_utils.py:598) +/** + * Constructs a DlgSettingsUI which is a child of 'parent', with the + * name 'name' and widget flags set to 'f' + */ DlgSettingsUI::DlgSettingsUI(QWidget* parent) - : PreferencePage( parent ) + : PreferencePage(parent) + , ui(new Ui_DlgSettingsUI) { - - 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) - VisibilityIcon = new Gui::PrefCheckBox(this); - layoutTreeview->addWidget(VisibilityIcon, 3, 0); - VisibilityIcon->setChecked(Gui::TreeParams::defaultVisibilityIcon()); - VisibilityIcon->setEntryName("VisibilityIcon"); - VisibilityIcon->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) - HideInternalNames = new Gui::PrefCheckBox(this); - layoutTreeview->addWidget(HideInternalNames, 5, 0); - HideInternalNames->setChecked(Gui::TreeParams::defaultHideInternalNames()); - HideInternalNames->setEntryName("HideInternalNames"); - HideInternalNames->setParamGrpPath("TreeView"); - - // Auto generated code (Tools/params_utils.py:433) - HideScrollBar = new Gui::PrefCheckBox(this); - layoutTreeview->addWidget(HideScrollBar, 6, 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, 7, 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, 8, 0); - IconSize = new Gui::PrefSpinBox(this); - layoutTreeview->addWidget(IconSize, 8, 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, 9, 0); - FontSize = new Gui::PrefSpinBox(this); - layoutTreeview->addWidget(FontSize, 9, 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, 10, 0); - ItemSpacing = new Gui::PrefSpinBox(this); - layoutTreeview->addWidget(ItemSpacing, 10, 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(); + ui->setupUi(this); } -// Auto generated code (Tools/params_utils.py:614) -DlgSettingsUI::~DlgSettingsUI() -{ -} +/** + * Destroys the object and frees any allocated resources + */ +DlgSettingsUI::~DlgSettingsUI() = default; -// 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(); - VisibilityIcon->onSave(); - HideColumn->onSave(); - HideInternalNames->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(); + // Theme + ui->ThemeAccentColor1->onSave(); + ui->ThemeAccentColor2->onSave(); + ui->ThemeAccentColor3->onSave(); + ui->StyleSheets->onSave(); + ui->OverlayStyleSheets->onSave(); + + // Tree View + ui->iconSizeSpinBox->onSave(); + ui->rowSpacingSpinBox->onSave(); + ui->resizableColumnsCheckBox->onSave(); + ui->showVisibilityIconCheckBox->onSave(); + ui->hideDescriptionCheckBox->onSave(); + ui->hideInternalNamesCheckBox->onSave(); + ui->hideTreeViewScrollBarCheckBox->onSave(); + ui->hideHeaderCheckBox->onSave(); + + // Overlay + ui->hideTabBarCheckBox->onSave(); + ui->hintShowTabBarCheckBox->onSave(); + ui->hidePropertyViewScrollBarCheckBox->onSave(); + ui->overlayAutoHideCheckBox->onSave(); + ui->mouseClickPassThroughCheckBox->onSave(); + ui->mouseWheelPassThroughCheckBox->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(); - VisibilityIcon->onRestore(); - HideColumn->onRestore(); - HideInternalNames->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(); + // Theme + ui->ThemeAccentColor1->onRestore(); + ui->ThemeAccentColor2->onRestore(); + ui->ThemeAccentColor3->onRestore(); + + // Tree View + ui->iconSizeSpinBox->onRestore(); + ui->rowSpacingSpinBox->onRestore(); + ui->resizableColumnsCheckBox->onRestore(); + ui->showVisibilityIconCheckBox->onRestore(); + ui->hideDescriptionCheckBox->onRestore(); + ui->hideInternalNamesCheckBox->onRestore(); + ui->hideTreeViewScrollBarCheckBox->onRestore(); + ui->hideHeaderCheckBox->onRestore(); + + // Overlay + ui->hideTabBarCheckBox->onRestore(); + ui->hintShowTabBarCheckBox->onRestore(); + ui->hidePropertyViewScrollBarCheckBox->onRestore(); + ui->overlayAutoHideCheckBox->onRestore(); + ui->mouseClickPassThroughCheckBox->onRestore(); + ui->mouseWheelPassThroughCheckBox->onRestore(); + + loadStyleSheet(); } -// Auto generated code (Tools/params_utils.py:640) -void DlgSettingsUI::retranslateUi() +void DlgSettingsUI::loadStyleSheet() { - 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")); - VisibilityIcon->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docVisibilityIcon())); - VisibilityIcon->setText(QObject::tr("Show visibility icon")); - HideColumn->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideColumn())); - HideColumn->setText(QObject::tr("Hide Description")); - HideInternalNames->setToolTip(QApplication::translate("TreeParams", Gui::TreeParams::docHideInternalNames())); - HideInternalNames->setText(QObject::tr("Hide Internal Names")); - 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()); + populateStylesheets("StyleSheet", "qss", ui->StyleSheets, "No style sheet"); + populateStylesheets("OverlayActiveStyleSheet", "overlay", ui->OverlayStyleSheets, "Auto"); } -// Auto generated code (Tools/params_utils.py:657) +void DlgSettingsUI::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; + if (filter.isEmpty()) { + filter << QStringLiteral("*.qss"); + filter << QStringLiteral("*.css"); + } + QFileInfoList fileNames; + + // read from user, resource and built-in directory + 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 + combo->addItem(tr(def), QStringLiteral("")); + for (QMap::iterator it = cssFiles.begin(); it != cssFiles.end(); ++it) { + combo->addItem(it.key(), it.value()); + } + + 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()) { + QFileInfo fi(selectedStyleSheet); + if (fi.isAbsolute()) { + QString path = fi.absolutePath(); + if (qssPaths.indexOf(path) >= 0) { + selectedStyleSheet = fi.fileName(); + } + else { + selectedStyleSheet = fi.absoluteFilePath(); + combo->addItem(fi.baseName(), selectedStyleSheet); + } + } + } + + combo->setCurrentIndex(index); + combo->onRestore(); +} + +/** + * Sets the strings of the subwidgets using the current language. + */ void DlgSettingsUI::changeEvent(QEvent *e) { if (e->type() == QEvent::LanguageChange) { - retranslateUi(); + ui->retranslateUi(this); + loadStyleSheet(); + } + else { + QWidget::changeEvent(e); } - QWidget::changeEvent(e); } -// Auto generated code (Tools/params_utils.py:670) +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 DlgSettingsUI::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_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, [this]() { - 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 index a113845025..4dcfbea680 100644 --- a/src/Gui/PreferencePages/DlgSettingsUI.h +++ b/src/Gui/PreferencePages/DlgSettingsUI.h @@ -1,169 +1,72 @@ -/**************************************************************************** - * 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 * - * * - ****************************************************************************/ +/*************************************************************************** + * Copyright (c) 2009 Werner Mayer * + * * + * 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; +#ifndef GUI_DIALOG_DlgSettingsUI_H +#define GUI_DIALOG_DlgSettingsUI_H -/*[[[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; +#include 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 PrefComboBox; + +namespace Dialog { +class Ui_DlgSettingsUI; + +/** + * The DlgSettingsUI class implements a preference page to change theme settings. + * @author Pierre-Louis Boyer */ -class DlgSettingsUI : public Gui::Dialog::PreferencePage +class DlgSettingsUI : public PreferencePage { - Q_OBJECT + Q_OBJECT public: - DlgSettingsUI( QWidget* parent = 0 ); - ~DlgSettingsUI(); + explicit DlgSettingsUI(QWidget* parent = nullptr); + ~DlgSettingsUI() override; - void saveSettings(); - void loadSettings(); - void retranslateUi(); + void saveSettings() override; + void loadSettings() override; + + void loadStyleSheet(); + + static void attachObserver(); protected: - void changeEvent(QEvent *e); + void changeEvent(QEvent *e) override; + + void populateStylesheets(const char *key, + const char *path, + PrefComboBox *combo, + const char *def, + QStringList filter = QStringList()); 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 *VisibilityIcon = nullptr; - Gui::PrefCheckBox *HideColumn = nullptr; - Gui::PrefCheckBox *HideInternalNames = 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) + std::unique_ptr ui; }; + } // namespace Dialog } // namespace Gui -//[[[end]]] -#endif // GUI_DIALOG_DLGSETTINGSUI_H + +#endif // GUI_DIALOG_DlgSettingsUI_H diff --git a/src/Gui/PreferencePages/DlgSettingsUI.ui b/src/Gui/PreferencePages/DlgSettingsUI.ui new file mode 100644 index 0000000000..33eadaa4cc --- /dev/null +++ b/src/Gui/PreferencePages/DlgSettingsUI.ui @@ -0,0 +1,530 @@ + + + Gui::Dialog::DlgSettingsUI + + + + 0 + 0 + 405 + 1065 + + + + UI + + + + + + Theme customization + + + + + + This section 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. + + + true + + + + + + + + + Accent color 1 + + + ThemeAccentColor1 + + + + + + + + 0 + 0 + + + + This color might be used by your theme to let you customize it. + + + + 85 + 123 + 182 + + + + ThemeAccentColor1 + + + Themes + + + + + + + Accent color 2 + + + ThemeAccentColor2 + + + + + + + Accent color 3 + + + ThemeAccentColor3 + + + + + + + Style sheet (advanced): + + + StyleSheets + + + + + + + Overlay style sheet: + + + OverlayStyleSheets + + + + + + + + 0 + 0 + + + + This color might be used by your theme to let you customize it. + + + + 85 + 123 + 182 + + + + ThemeAccentColor2 + + + Themes + + + + + + + + 0 + 0 + + + + This color might be used by your theme to let you customize it. + + + + 85 + 123 + 182 + + + + ThemeAccentColor3 + + + Themes + + + + + + + Style sheet how user interface will look like + + + MainWindow + + + StyleSheet + + + + + + + + + + MainWindow + + + OverlayActiveStyleSheet + + + + + + + + + + + + + + + Tree view + + + + + + Hide extra tree view column - Internal Names. + + + Hide Internal Names + + + HideInternalNames + + + TreeView + + + + + + + Icon size override, set to 0 for the default value. + + + 1 + + + 16 + + + TreeView + + + IconSize + + + + + + + Additional row spacing + + + rowSpacingSpinBox + + + + + + + Allow tree view columns to be manually resized. + + + Resizable columns + + + ResizableColumn + + + TreeView + + + + + + + Icon size + + + iconSizeSpinBox + + + + + + + Additional spacing for tree view rows. Bigger values will increase row item heights. + + + 1 + + + 0 + + + TreeView + + + ItemSpacing + + + + + + + If enabled, show an eye icon before the tree view items, showing the items visibility status. When clicked the visibility is toggled. + + + Show visibility icon + + + VisibilityIcon + + + TreeView + + + + + + + Hide header with column names from the tree view. + + + Hide header + + + HideHeaderView + + + TreeView + + + + + + + Hide scroll bar from the tree view, scrolling will still be possible using mouse wheel. + + + Hide scroll bar + + + HideScrollBar + + + TreeView + + + + + + + Hide column with object description in tree view. + + + Hide description + + + HideColumn + + + TreeView + + + + + + + + + + Overlay + + + + + + Hide tab bar in dock overlay + + + Hide tab bar + + + DockOverlayHideTabBar + + + View + + + + + + + Show tab bar on mouse over when auto hide + + + Hint show tab bar + + + DockOverlayHintTabBar + + + View + + + + + + + Hide property view scroll bar in dock overlay + + + Hide property view scroll bar + + + DockOverlayHidePropertyViewScrollBar + + + View + + + + + + + Automatically hide overlayed dock panels when in non 3D view (like TechDraw or Spreadsheet). + + + Auto hide in non 3D view + + + DockOverlayAutoView + + + View + + + + + + + Auto mouse click through transparent part of dock overlay. + + + Auto mouse pass through + + + DockOverlayAutoMouseThrough + + + View + + + + + + + Auto pass through mouse wheel event on transparent dock overlay. + + + Auto mouse wheel pass through + + + DockOverlayWheelPassThrough + + + View + + + + + + + + + + Qt::Vertical + + + + 20 + 20 + + + + + + + + + Gui::ColorButton + QPushButton +
Gui/Widgets.h
+
+ + Gui::PrefColorButton + Gui::ColorButton +
Gui/PrefWidgets.h
+
+ + Gui::PrefComboBox + QComboBox +
Gui/PrefWidgets.h
+
+ + Gui::PrefSpinBox + QSpinBox +
Gui/PrefWidgets.h
+
+ + Gui::PrefCheckBox + QCheckBox +
Gui/PrefWidgets.h
+
+
+ + ThemeAccentColor1 + ThemeAccentColor2 + ThemeAccentColor3 + StyleSheets + OverlayStyleSheets + iconSizeSpinBox + rowSpacingSpinBox + resizableColumnsCheckBox + showVisibilityIconCheckBox + hideDescriptionCheckBox + hideInternalNamesCheckBox + hideTreeViewScrollBarCheckBox + hideHeaderCheckBox + hideTabBarCheckBox + hintShowTabBarCheckBox + hidePropertyViewScrollBarCheckBox + overlayAutoHideCheckBox + mouseClickPassThroughCheckBox + mouseWheelPassThroughCheckBox + + + +
diff --git a/src/Gui/TreeParams.py b/src/Gui/TreeParams.py index 8c06880cab..ff1e59858e 100644 --- a/src/Gui/TreeParams.py +++ b/src/Gui/TreeParams.py @@ -63,7 +63,7 @@ Params = [ ParamInt('Indentation', 0, on_change=True), ParamBool('LabelExpression', False), ParamInt('IconSize', 0, on_change=True), - ParamInt('FontSize', 0, on_change=True), + ParamInt('FontSize', 0, on_change=True, title='Font size'), ParamInt('ItemSpacing', 0, on_change=True), ParamHex('ItemBackground', 0, on_change=True, title='Item background color', proxy=ParamColor(), doc = "Tree view item background. Only effective in overlay."), diff --git a/src/Gui/resource.cpp b/src/Gui/resource.cpp index 6434d12447..d7961ab35d 100644 --- a/src/Gui/resource.cpp +++ b/src/Gui/resource.cpp @@ -42,10 +42,10 @@ #include "PreferencePages/DlgSettingsPythonConsole.h" #include "PreferencePages/DlgSettingsReportView.h" #include "PreferencePages/DlgSettingsSelection.h" -#include "PreferencePages/DlgSettingsTheme.h" +#include "PreferencePages/DlgSettingsUI.h" #include "PreferencePages/DlgSettingsViewColor.h" #include "PreferencePages/DlgSettingsWorkbenchesImp.h" -#include "PreferencePages/DlgSettingsUI.h" +#include "PreferencePages/DlgSettingsAdvanced.h" #include "DlgToolbarsImp.h" #include "DlgActionsImp.h" @@ -81,11 +81,11 @@ WidgetFactorySupplier::WidgetFactorySupplier() 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") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); - new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); - DlgSettingsTheme::attachObserver(); + new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Display") ); + DlgSettingsUI::attachObserver(); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject","Workbenches") ); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject", "Python")); new PrefPageProducer ( QT_TRANSLATE_NOOP("QObject", "Python"));