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