Merge pull request #22459 from kadet1090/stylesheet-fixes

Stylesheet: Various fixes
This commit is contained in:
Max Wilfinger
2025-07-15 04:58:06 +02:00
committed by GitHub
10 changed files with 271 additions and 291 deletions

View File

@@ -5,7 +5,7 @@
<property name="styleSheet">
<string notr="true">#sidebar { background-color: rgba(0, 0, 0, 25); }
#groupsTreeView { background-color: transparent; }
#groupsTreeView::item { padding: 6px 8px; }</string>
#groupsTreeView::item { padding: 6px 0px; }</string>
</property>
<property name="geometry">
<rect>

View File

@@ -668,7 +668,6 @@ FileChooser::FileChooser ( QWidget * parent )
completer->setModel( fs_model );
lineEdit->setCompleter( completer );
layout->addWidget( lineEdit );
connect(lineEdit, &QLineEdit::textChanged, this, &FileChooser::fileNameChanged);
connect(lineEdit, &QLineEdit::editingFinished, this, &FileChooser::editingFinished);
@@ -679,7 +678,8 @@ FileChooser::FileChooser ( QWidget * parent )
button->setAttribute(Qt::WA_LayoutUsesWidgetRect); // layout size from QMacStyle was not correct
#endif
layout->addWidget(button);
layout->addWidget(lineEdit, 1);
layout->addWidget(button, -1);
connect(button, &QPushButton::clicked, this, &FileChooser::chooseFile);
@@ -690,7 +690,6 @@ FileChooser::~FileChooser() = default;
void FileChooser::resizeEvent(QResizeEvent* e)
{
button->setFixedWidth(e->size().height());
button->setFixedHeight(e->size().height());
}
@@ -815,12 +814,12 @@ void FileChooser::setFilter ( const QString& filter )
/**
* Sets the browse button's text to \a txt.
*/
void FileChooser::setButtonText( const QString& txt )
void FileChooser::setButtonText(const QString& txt)
{
button->setText( txt );
button->setText(txt);
int w1 = 2 * QtTools::horizontalAdvance(button->fontMetrics(), txt);
int w2 = 2 * QtTools::horizontalAdvance(button->fontMetrics(), QLatin1String(" ... "));
button->setFixedWidth( (w1 > w2 ? w1 : w2) );
button->setMinimumWidth(std::max(w1, w2));
Q_EMIT buttonTextChanged(txt);
}

View File

@@ -1,31 +1,34 @@
SET(PreferencePacks_Files
"package.xml"
"package.xml"
)
SET(PreferencePacks_Directories
"FreeCAD Classic"
"Dark behave"
"FreeCAD Light"
"FreeCAD Dark"
"FreeCAD Classic"
"Dark behave"
"FreeCAD Light"
"FreeCAD Dark"
)
ADD_CUSTOM_TARGET(PreferencePacks_data ALL
SOURCES ${PreferencePacks_Files} ${PreferencePacks_Directories}
SOURCES ${PreferencePacks_Files} ${PreferencePacks_Directories}
)
FILE(COPY ${PreferencePacks_Files} ${PreferencePacks_Directories} DESTINATION "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks")
fc_copy_sources(PreferencePacks_data "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks"
${PreferencePacks_Files}
${PreferencePacks_Directories})
INSTALL(
FILES
${PreferencePacks_Files}
DESTINATION
${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks
FILES
${PreferencePacks_Files}
DESTINATION
${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks
)
INSTALL(
DIRECTORY
${PreferencePacks_Directories}
DESTINATION
${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks
DIRECTORY
${PreferencePacks_Directories}
DESTINATION
${CMAKE_INSTALL_DATADIR}/Gui/PreferencePacks
)

View File

@@ -26,7 +26,7 @@
<FCParamGroup Name="MainWindow">
<FCText Name="OverlayActiveStyleSheet">Freecad Overlay.qss</FCText>
<FCText Name="QtStyle">Fusion</FCText>
<FCText Name="StyleSheet">FreeCAD_Stylesheet.qss</FCText>
<FCText Name="StyleSheet">FreeCAD.qss</FCText>
<FCText Name="Theme">FreeCAD Dark</FCText>
</FCParamGroup>
<FCParamGroup Name="Mod">
@@ -121,6 +121,7 @@
<FCText Name="GeneralBorderHoverColor">@PrimaryColorLighten6</FCText>
<FCText Name="GeneralDisabledBackgroundColor">@PrimaryColorDarken3</FCText>
<FCText Name="GeneralGridLinesColor">@PrimaryColorLighten3</FCText>
<FCText Name="GeneralHeaderBackgroundColor">@PrimaryColor</FCText>
<FCText Name="GroupboxBackgroundColor">@PrimaryColorLighten4</FCText>
<FCText Name="GroupboxBorderColor">lighten(@GroupboxBackgroundColor,20)</FCText>
<FCText Name="IconsLocationFolderName">images_classic</FCText>
@@ -155,11 +156,12 @@
<FCText Name="TextDisabledColor">darken(@TextForegroundColor,40)</FCText>
<FCText Name="TextEditFieldBackgroundColor">@PrimaryColor</FCText>
<FCText Name="TextForegroundColor">#ffffff</FCText>
<FCText Name="TextSelectBackgroundColor">darken(@UserHighlight1Color,100)</FCText>
<FCText Name="TextSelectBackgroundColor">darken(@AccentColor,100)</FCText>
<FCText Name="TextUrlColor">#0095ff</FCText>
<FCText Name="ToolbarButtonsPadding">2px</FCText>
<FCText Name="UserHighlight1Color">@ThemeAccentColor1</FCText>
<FCText Name="UserHighlight2Color">@ThemeAccentColor2</FCText>
<FCText Name="AccentColor">@ThemeAccentColor1</FCText>
<FCText Name="AccentBackgroundColor">blend(@GeneralBackgroundColor,@AccentColor,60)</FCText>
<FCText Name="AccentHoverColor">blend(@GeneralBackgroundHoverColor,@AccentColor,30)</FCText>
</FCParamGroup>
<FCParamGroup Name="Tokens"/>
</FCParamGroup>

View File

@@ -23,7 +23,7 @@
<FCParamGroup Name="MainWindow">
<FCText Name="OverlayActiveStyleSheet">Freecad Overlay.qss</FCText>
<FCText Name="QtStyle">Fusion</FCText>
<FCText Name="StyleSheet">FreeCAD_Stylesheet.qss</FCText>
<FCText Name="StyleSheet">FreeCAD.qss</FCText>
<FCText Name="Theme">FreeCAD Light</FCText>
</FCParamGroup>
<FCParamGroup Name="Mod">
@@ -136,6 +136,7 @@
<FCText Name="GeneralBorderHoverColor">@PrimaryColorDarken5</FCText>
<FCText Name="GeneralDisabledBackgroundColor">@PrimaryColorDarken3</FCText>
<FCText Name="GeneralGridLinesColor">@PrimaryColorDarken4</FCText>
<FCText Name="GeneralHeaderBackgroundColor">@PrimaryColorDarken2</FCText>
<FCText Name="GroupboxBackgroundColor">@PrimaryColorLighten2</FCText>
<FCText Name="GroupboxBorderColor">darken(@GroupboxBackgroundColor,20)</FCText>
<FCText Name="IconsLocationFolderName">images_classic</FCText>
@@ -170,11 +171,11 @@
<FCText Name="TextDisabledColor">lighten(@TextForegroundColor,40)</FCText>
<FCText Name="TextEditFieldBackgroundColor">@PrimaryColorLighten3</FCText>
<FCText Name="TextForegroundColor">#000000</FCText>
<FCText Name="TextSelectBackgroundColor">lighten(@UserHighlight1Color,50)</FCText>
<FCText Name="TextSelectBackgroundColor">@AccentHoverColor</FCText>
<FCText Name="TextUrlColor">#0061a7</FCText>
<FCText Name="ToolbarButtonsPadding">2px</FCText>
<FCText Name="UserHighlight1Color">@ThemeAccentColor1</FCText>
<FCText Name="UserHighlight2Color">@ThemeAccentColor2</FCText>
<FCText Name="AccentColor">@ThemeAccentColor1</FCText>
<FCText Name="AccentBackgroundColor">blend(@GeneralBackgroundColor,@AccentColor,60)</FCText>
<FCText Name="AccentHoverColor">blend(@GeneralBackgroundHoverColor,@AccentColor,30)</FCText>
</FCParamGroup>
<FCParamGroup Name="Tokens"/>
</FCParamGroup>

View File

@@ -6,7 +6,6 @@
<maintainer email="email@FreeCAD.org">MisterMaker</maintainer>
<license file="../../LICENSE">LGPL2</license>
<url type="repository">https://github.com/FreeCAD/FreeCAD</url>
<content>
<preferencepack>
<name>FreeCAD Classic</name>
@@ -25,7 +24,7 @@
<version>1.0.0</version>
<tag>built-in</tag>
<tag>background</tag>
<tag>light</tag>
<tag>light</tag>
</preferencepack>
<preferencepack>
<name>FreeCAD Dark</name>
@@ -34,8 +33,7 @@
<version>1.0.0</version>
<tag>built-in</tag>
<tag>background</tag>
<tag>dark</tag>
<tag>dark</tag>
</preferencepack>
</content>
</package>

View File

@@ -57,6 +57,7 @@ void ActionGroup::init(bool hasHeader)
separator->setFrameShadow(QFrame::Raised);
separator->setFixedHeight(separatorHeight);
separator->setContentsMargins(8, 0, 8, 0);
separator->setProperty("class", "separator");
layout->addWidget(separator);
myGroup = new TaskGroup(this, hasHeader);

View File

@@ -26,6 +26,8 @@
#include "Parser.h"
#include "ParameterManager.h"
#include <Base/Tools.h>
#ifndef _PreComp_
#include <QColor>
#include <QRegularExpression>
@@ -54,36 +56,85 @@ Value Color::evaluate([[maybe_unused]] const EvaluationContext& context) const
Value FunctionCall::evaluate(const EvaluationContext& context) const
{
if (arguments.size() != 2) {
THROWM(Base::ExpressionError,
fmt::format("Function '{}' expects 2 arguments, got {}",
functionName,
arguments.size()));
}
const auto lightenOrDarken = [this](const EvaluationContext& context) -> Value {
if (arguments.size() != 2) {
THROWM(Base::ExpressionError,
fmt::format("Function '{}' expects 2 arguments, got {}",
functionName,
arguments.size()));
}
auto colorArg = arguments[0]->evaluate(context);
auto amountArg = arguments[1]->evaluate(context);
auto colorArg = arguments[0]->evaluate(context);
auto amountArg = arguments[1]->evaluate(context);
if (!std::holds_alternative<QColor>(colorArg)) {
THROWM(Base::ExpressionError,
fmt::format("'{}' is not supported for colors", functionName));
}
if (!std::holds_alternative<QColor>(colorArg)) {
THROWM(Base::ExpressionError,
fmt::format("'{}' is not supported for colors", functionName));
}
auto color = std::get<QColor>(colorArg);
auto color = std::get<QColor>(colorArg);
// In Qt if you want to make color 20% darker or lighter, you need to pass 120 as the value
// we, however, want users to pass only the relative difference, hence we need to add the
// 100 required by Qt.
//
// NOLINTNEXTLINE(*-magic-numbers)
auto amount = 100 + static_cast<int>(std::get<Length>(amountArg).value);
// In Qt if you want to make color 20% darker or lighter, you need to pass 120 as the value
// we, however, want users to pass only the relative difference, hence we need to add the
// 100 required by Qt.
//
// NOLINTNEXTLINE(*-magic-numbers)
auto amount = 100 + static_cast<int>(std::get<Length>(amountArg).value);
if (functionName == "lighten") {
return color.lighter(amount);
}
if (functionName == "lighten") {
return color.lighter(amount);
}
if (functionName == "darken") {
return color.darker(amount);
if (functionName == "darken") {
return color.darker(amount);
}
return {};
};
const auto blend = [this](const EvaluationContext& context) -> Value {
if (arguments.size() != 3) {
THROWM(Base::ExpressionError,
fmt::format("Function '{}' expects 3 arguments, got {}",
functionName,
arguments.size()));
}
auto firstColorArg = arguments[0]->evaluate(context);
auto secondColorArg = arguments[1]->evaluate(context);
auto amountArg = arguments[2]->evaluate(context);
if (!std::holds_alternative<QColor>(firstColorArg)) {
THROWM(Base::ExpressionError,
fmt::format("first argument of '{}' must be color", functionName));
}
if (!std::holds_alternative<QColor>(secondColorArg)) {
THROWM(Base::ExpressionError,
fmt::format("second argument of '{}' must be color", functionName));
}
auto firstColor = std::get<QColor>(firstColorArg);
auto secondColor = std::get<QColor>(secondColorArg);
auto amount = Base::fromPercent(std::get<Length>(amountArg).value);
return QColor::fromRgbF(
(1 - amount) * firstColor.redF() + amount * secondColor.redF(),
(1 - amount) * firstColor.greenF() + amount * secondColor.greenF(),
(1 - amount) * firstColor.blueF() + amount * secondColor.blueF()
);
};
std::map<std::string, std::function<Value(const EvaluationContext&)>> functions = {
{"lighten", lightenOrDarken},
{"darken", lightenOrDarken},
{"blend", blend},
};
if (functions.contains(functionName)) {
auto function = functions.at(functionName);
return function(context);
}
THROWM(Base::ExpressionError, fmt::format("Unknown function '{}'", functionName));

View File

@@ -1,6 +1,6 @@
SET(Stylesheets_Files
"FreeCAD_stylesheet.qss"
"FreeCAD.qss"
#remove below after testing new stylesheet system 8/6/2025
"FreeCAD Dark.qss"
"FreeCAD Light.qss"

View File

@@ -25,7 +25,7 @@ INSTALLATION WHEN NECESSARY
FOLLOWING CODES ARE CHANGED IN THE SETTINGS:
@PrimaryColor
@UserHighlight1Color
@AccentColor
@GeneralAlternateBackgroundColor
@GeneralBackgroundColor
@GeneralBorderColor
@@ -71,19 +71,16 @@ Resetting everything helps to unify styles across different operating systems
--------------------------------------------------------------------------- */
* {
padding: 0px;
margin: 0px;
border-style: none;
border-image: none;
border-radius: 0px;
border-color: @GeneralBorderColor;
border-style: none;
outline: none;
color:@TextForegroundColor;
color: @TextForegroundColor;
selection-background-color: @TextSelectBackgroundColor;
selection-color:@TextForegroundColor;
selection-color: @TextForegroundColor;
gridline-color: @GeneralGridLinesColor;
spacing: 0px;
}
/* specific reset for elements inside QToolBar */
@@ -91,10 +88,10 @@ QToolBar * {}/*hacks */
/* fix for column items background when a link is present */
Gui--PropertyEditor--PropertyEditor > QWidget > QFrame:focus {
background-color: @UserHighlight1Color;/* same as focused background color */}
background-color: @AccentColor;/* same as focused background color */}
/* hack to hide weird redundant information inside cells with links and no editable data (but editable via "..." button) */
Gui--PropertyEditor--PropertyEditor > QWidget > QWidget > QLabel {
background-color: @TextUrlColor;/* same as focused background color */
background-color: @TextUrlColor;/* same as focused background color */
border-radius: @InputFieldBorderRadius;
}
@@ -118,12 +115,6 @@ Gui--NavigationIndicatorGui--BlenderNavigationStyle {
qproperty-icon: url(:/icons/icons/NavigationBlender_light.svg);
}
Gui--MDIView QFrame{
border-top: 3px solid qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @GeneralBorderColor, stop:1 transparent);
border-left: 3px solid qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 @GeneralBorderColor stop:1 transparent);
border-right: 3px solid qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 transparent, stop:1 @GeneralBorderColor);
}
Gui--MDIView QLabel{
border-style: none;
background-color: transparent;
@@ -136,10 +127,6 @@ Gui--MDIView QScrollArea{
This causes much load time. DONT USE "QWidget { " This causes a lot of lag.
*/
/* QWidget::item:selected {
background-color: @UserHighlight1Color;
}
*/
@@ -158,7 +145,7 @@ QColorDialog QLabel {
/* Causes issue with colorselector.
QWidget::item:hover:!selected {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
}
*/
@@ -236,7 +223,6 @@ QStatusBar QLabel {
}
QStatusBar QPushButton {
min-width: 0;
padding-left: 8px;
padding-right: 8px;
}
@@ -256,7 +242,7 @@ QCheckBox {
}
QCheckBox:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QCheckBox QWidget:disabled {
@@ -356,7 +342,7 @@ QGroupBox::indicator:unchecked:hover {
}
QGroupBox::indicator:unchecked:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QGroupBox::indicator:unchecked:disabled {
@@ -376,7 +362,7 @@ QGroupBox::indicator:checked:hover {
}
QGroupBox::indicator:checked:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QGroupBox::indicator:checked:disabled {
@@ -400,7 +386,7 @@ QRadioButton {
}
QRadioButton:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QRadioButton:disabled {
@@ -472,7 +458,7 @@ QMenuBar::item:disabled{
}
QMenuBar:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QMenuBar::item {
@@ -483,12 +469,12 @@ QMenuBar::item {
QMenuBar::item:selected {
background-color: transparent;
border-style: none;
background-color: @GeneralBackgroundHoverColor;
background-color: @AccentBackgroundColor;
}
QMenuBar::item:pressed {
border-style: none;
background-color: @GeneralBackgroundHoverColor;
background-color: @AccentBackgroundColor;
}
/* QMenu ------------------------------------------------------------------
@@ -521,11 +507,11 @@ QMenu::item {
/* Reserve space for selection border */}
QMenu::item:selected {
background-color: @GeneralBackgroundHoverColor;
background-color: @AccentBackgroundColor;
}
QMenu::item:pressed {
background-color: @GeneralBackgroundHoverColor;
background-color: @AccentBackgroundColor;
}
QMenu::icon {
@@ -542,9 +528,9 @@ QMenu::indicator {
/* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */
/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */}
QMenu::icon:checked { /* appearance of a 'checked' icon */
background-color: @UserHighlight1Color;
background-color: @AccentColor;
margin-left: -5px;
border: 5px solid @UserHighlight1Color;
border: 5px solid @AccentColor;
position: absolute;
}
@@ -671,19 +657,23 @@ https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qscrollbar
--------------------------------------------------------------------------- */
QScrollBar:horizontal {
border-right: 14px solid qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 @ScrollbarBackgroundColor, stop:0.1 @ButtonTopBackgroundColor , stop:0.9 @ButtonTopBackgroundColor , stop:1 @ScrollbarBackgroundColor);
border-left: 14px solid qlineargradient(x1:1, y1:0, x2:0, y2:0, stop:0 @ScrollbarBackgroundColor, stop:0.1 @ButtonTopBackgroundColor , stop:0.9 @ButtonTopBackgroundColor , stop:1 @ScrollbarBackgroundColor);
border-right: 14px solid @GeneralBorderColor;
border-left: 14px solid @GeneralBorderColor;
border-top: 1px solid @GeneralBorderColor;
border-bottom: 1px solid @GeneralBorderColor;
background-color: @ScrollbarBackgroundColor;
padding: 0;
margin: 0;
}
QScrollBar:vertical {
border-top: 14px solid qlineargradient(x1:0, y1:1, x2:0, y2:0, stop:0 @ScrollbarBackgroundColor, stop:0.1 @ButtonTopBackgroundColor , stop:0.9 @ButtonTopBackgroundColor , stop:1 @ScrollbarBackgroundColor);
border-bottom: 14px solid qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ScrollbarBackgroundColor, stop:0.1 @ButtonTopBackgroundColor , stop:0.9 @ButtonTopBackgroundColor , stop:1 @ScrollbarBackgroundColor);
border-top: 14px solid @GeneralBorderColor;
border-bottom: 14px solid @GeneralBorderColor;
border-left: 1px solid @GeneralBorderColor;
border-right: 1px solid @GeneralBorderColor;
background-color: @ScrollbarBackgroundColor;
padding: 0;
margin: 0;
}
QScrollBar::handle:horizontal {
@@ -699,7 +689,7 @@ QScrollBar::handle:horizontal:hover {
}
QScrollBar::handle:horizontal:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QScrollBar::handle:vertical {
@@ -710,79 +700,80 @@ QScrollBar::handle:vertical {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 @ButtonTopBackgroundColor, stop:1 @ButtonBottomBackgroundColor);
}
QScrollBar::handle:vertical:hover {
background-color: @GeneralBackgroundHoverColor;
border: 1px @ButtonTopBackgroundColor;
}
QScrollBar::handle:vertical:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QScrollBar::add-line:horizontal {
margin: 0px 2px 0px 2px;
border-image: url(qss:@IconsLocationFolderName/arrow-right-lightgray.svg);
height: 10px;
width: 10px;
subcontrol-position: right;
QScrollBar::add-line, QScrollBar::sub-line {
height: 12px;
width: 12px;
subcontrol-origin: margin;
border: 1px solid @GeneralBorderColor;
}
QScrollBar::add-line:horizontal:hover, QScrollBar::add-line:horizontal:on {
border-image: url(qss:@IconsLocationFolderName/arrow-right-@StylesheetIconsColor.svg);
QScrollBar::handle:hover,
QScrollBar::add-line:vertical:hover, QScrollBar::sub-line:vertical:hover ,
QScrollBar::add-line:horizontal:hover, QScrollBar::sub-line:horizontal:hover {
background-color: @GeneralBackgroundHoverColor;
}
QScrollBar::add-line:vertical {
margin: 2px 0px 2px 0px;
border-image: url(qss:@IconsLocationFolderName/arrow-down-lightgray.svg);
height: 10px;
width: 10px;
subcontrol-position: bottom;
subcontrol-origin: margin;
QScrollBar::right-arrow, QScrollbar::left-arrow, QScrollBar::up-arrow, QScrollBar::down-arrow {
margin: 2px;
}
QScrollBar::add-line:vertical:hover, QScrollBar::add-line:vertical:on {
image: url(qss:@IconsLocationFolderName/arrow-down-@StylesheetIconsColor.svg);
}
QScrollBar::sub-line:horizontal {
margin: 0px 2px 0px 2px;
QScrollBar::left-arrow {
border-image: url(qss:@IconsLocationFolderName/arrow-left-lightgray.svg);
height: 10px;
width: 10px;
subcontrol-position: left;
subcontrol-origin: margin;
}
QScrollBar::sub-line:horizontal:hover, QScrollBar::sub-line:horizontal:on {
QScrollBar::right-arrow {
border-image: url(qss:@IconsLocationFolderName/arrow-right-lightgray.svg);
}
QScrollBar::up-arrow {
border-image: url(qss:@IconsLocationFolderName/arrow-up-lightgray.svg);
}
QScrollBar::down-arrow {
border-image: url(qss:@IconsLocationFolderName/arrow-down-lightgray.svg);
}
QScrollBar::left-arrow:hover {
border-image: url(qss:@IconsLocationFolderName/arrow-left-@StylesheetIconsColor.svg);
}
QScrollBar::sub-line:vertical {
margin: 2px 0px 2px 0px;
border-image: url(qss:@IconsLocationFolderName/arrow-up-lightgray.svg);
height: 10px;
width: 10px;
subcontrol-position: top;
subcontrol-origin: margin;
QScrollBar::right-arrow:hover {
border-image: url(qss:@IconsLocationFolderName/arrow-right-@StylesheetIconsColor.svg);
}
QScrollBar::sub-line:vertical:hover, QScrollBar::sub-line:vertical:on {
QScrollBar::up-arrow:hover {
border-image: url(qss:@IconsLocationFolderName/arrow-up-@StylesheetIconsColor.svg);
}
QScrollBar::up-arrow:horizontal, QScrollBar::down-arrow:horizontal {
background-color: none;
QScrollBar::down-arrow:hover {
border-image: url(qss:@IconsLocationFolderName/arrow-down-@StylesheetIconsColor.svg);
}
QScrollBar::up-arrow:vertical, QScrollBar::down-arrow:vertical {
background-color: none;
QScrollBar::add-line:horizontal {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ButtonTopBackgroundColor, stop:1 @ButtonBottomBackgroundColor);
subcontrol-position: right;
}
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
background-color: none;
QScrollBar::add-line:vertical {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 @ButtonTopBackgroundColor, stop:1 @ButtonBottomBackgroundColor);
subcontrol-position: bottom;
}
QScrollBar::sub-line:horizontal {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ButtonTopBackgroundColor, stop:1 @ButtonBottomBackgroundColor);
subcontrol-position: left;
}
QScrollBar::sub-line:vertical {
background-color: qlineargradient(x1:0, y1:0, x2:1, y2:0, stop:0 @ButtonTopBackgroundColor, stop:1 @ButtonBottomBackgroundColor);
subcontrol-position: top;
}
QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal,
QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
background-color: none;
}
@@ -799,11 +790,11 @@ QTextEdit {
}
QTextEdit:focus {
border-top: 2px solid @UserHighlight1Color;
border-top: 2px solid @AccentColor;
}
QTextEdit:selected {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
}
/* QPlainTextEdit ---------------------------------------------------------
@@ -817,7 +808,7 @@ QPlainTextEdit {
}
QPlainTextEdit:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QPlainTextEdit:selected {
@@ -1037,7 +1028,7 @@ QAbstractSpinBox:disabled {
QAbstractSpinBox:hover {}
QAbstractSpinBox:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QAbstractSpinBox:selected {
@@ -1145,7 +1136,7 @@ QProgressBar:disabled {
}
QProgressBar::chunk {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
color: @PrimaryColor;
border-radius: @InputFieldBorderRadius;
}
@@ -1167,15 +1158,18 @@ QPushButton {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ButtonTopBackgroundColor,stop:1 @ButtonBottomBackgroundColor);
border: 1px solid @ButtonBorderColor;
border-radius: @InputFieldBorderRadius;
padding: 3px 12px;
min-width: 40px;}
padding: 3px 12px;
min-width: 64px;
}
#CreateNewRow > QPushButton {
/* Reset min width to default */
min-width: -1;
border-radius: @InputFieldBorderRadius;
}
Gui--FileChooser QPushButton {
min-width: 0;
}
QPushButton:disabled {
background-color: @GeneralDisabledBackgroundColor;
color: @TextDisabledColor;
@@ -1187,18 +1181,18 @@ QPushButton:checked {
}
QPushButton:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QPushButton:checked:disabled {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
color: @TextDisabledColor;
outline: none;
}
QPushButton:checked:selected {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ButtonTopBackgroundColor, stop:1 @ButtonBottomBackgroundColor);
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QPushButton:hover {
@@ -1219,11 +1213,6 @@ QPushButton::menu-indicator {
bottom: 4px;
}
QDialogButtonBox QPushButton {
min-width: 80px;
padding: 3px 0px;
}
/* QToolButton ------------------------------------------------------------
https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtoolbutton
@@ -1246,7 +1235,7 @@ QToolBar QToolButton {
QDialog QToolButton:hover {
background-color: @GeneralBackgroundHoverColor;
/* border: 1px solid @UserHighlight1Color;*/}
/* border: 1px solid @AccentColor;*/}
QToolButton:disabled {
/* padding: 2px; */
/* background-color: @GeneralDisabledBackgroundColor; */
@@ -1256,17 +1245,17 @@ QToolButton:disabled {
QToolButton:checked {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ButtonBottomBackgroundColor, stop:0.7 @ButtonTopBackgroundColor, stop:1 @ButtonTopBackgroundColor);
border-radius: @InputFieldBorderRadius;
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QToolButton:checked:disabled {
background-color: @GeneralDisabledBackgroundColor;
color: @UserHighlight1Color;
color: @AccentColor;
}
QToolButton:checked:hover {
background-color: @GeneralBackgroundHoverColor;
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QToolButton:checked:pressed {
@@ -1275,7 +1264,7 @@ QToolButton:checked:pressed {
QToolButton:checked:selected {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ButtonBottomBackgroundColor, stop:0.7 @ButtonTopBackgroundColor,stop:1 @ButtonBottomBackgroundColor );
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QToolButton:hover {
@@ -1396,7 +1385,7 @@ QComboBox:hover {
}
QComboBox:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QComboBox:on {
@@ -1449,8 +1438,8 @@ QComboBox::down-arrow:on, QComboBox::down-arrow:hover, QComboBox::down-arrow:foc
Tasks panel (custom FreeCAD class)
==================================================================================================*/
Gui--PropertyEditor--PropertyEditor {
qproperty-groupTextColor:@TextForegroundColor;
qproperty-groupBackground: @GeneralAlternateBackgroundColor;
qproperty-groupTextColor: @TextForegroundColor;
qproperty-groupBackground: @GeneralHeaderBackgroundColor;
}
/* Action group */
@@ -1519,7 +1508,6 @@ QSint--ActionGroup QFrame[class="header"] QLabel[fold="true"]:hover {
QSint--ActionGroup QFrame[class="content"] {
background-color: @DialogBackgroundColor;/* Task Panel background color */
border-bottom: 1px solid @GeneralBorderColor;
border-left: 1px solid @GeneralBorderColor;
border-right: 1px solid @GeneralBorderColor;
@@ -1560,6 +1548,12 @@ QSint--ActionGroup QFrame[class="content"] QToolButton:checked {
background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 @ButtonTopBackgroundColor, stop:1 @ButtonBottomBackgroundColor );
}
/* hide the empty line between header and content */
QSint--ActionGroup QFrame[class="separator"] {
min-height: 0;
max-height: 0;
}
/* QToolButtons with a menu found in Sketcher task panel*/
QSint--ActionGroup QToolButton::menu-button {
border-left: 1px solid @GeneralBorderColor;
@@ -1586,7 +1580,7 @@ QSint--ActionGroup QFrame[class="content"] QToolButton:hover{
}
QSint--ActionGroup QFrame[class="content"] QToolButton:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QSint--ActionGroup QFrame[class="content"] QToolButton:disabled {
@@ -1606,8 +1600,7 @@ QSint--ActionGroup QFrame[class="content"] QToolButton:pressed {
}
QFrame[class="panel"] QPushButton {
padding: 3px;
min-width: 0px;
padding: 3px;
}
/* QSlider ----------------------------------------------------------------
@@ -1627,7 +1620,7 @@ QSlider::groove:horizontal {
}
QSlider::groove:vertical {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
border: 1px solid @GeneralBorderColor;
width: 4px;
@@ -1635,7 +1628,7 @@ QSlider::groove:vertical {
}
QSlider::add-page:vertical {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
border: 1px solid @GeneralBorderColor;
width: 4px;
@@ -1647,7 +1640,7 @@ QSlider::add-page:vertical :disabled {
}
QSlider::sub-page:horizontal {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
border: 1px solid @GeneralBorderColor;
height: 4px;
@@ -1659,7 +1652,7 @@ QSlider::sub-page:horizontal:disabled {
}
QSlider::handle:horizontal {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
border: 1px solid @GeneralBorderColor;
width: 10px;
height: 8px;
@@ -1673,12 +1666,12 @@ QSlider::handle:horizontal:hover {
}
QSlider::handle:horizontal:focus {
background-color: @UserHighlight1Color;
border: 1px solid @UserHighlight1Color;
background-color: @AccentColor;
border: 1px solid @AccentColor;
}
QSlider::handle:vertical {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
border: 1px solid @GeneralBorderColor;
width: 10px;
height: 8px;
@@ -1692,7 +1685,7 @@ QSlider::handle:vertical:hover {
}
QSlider::handle:vertical:focus {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
/* QLineEdit --------------------------------------------------------------
@@ -1700,7 +1693,7 @@ QSlider::handle:vertical:focus {
https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qlineedit
--------------------------------------------------------------------------- */
QLineEdit {
QLineEdit, QTextEdit {
background-color: @TextEditFieldBackgroundColor;
padding-top: 2px;
padding-bottom: 2px;
@@ -1711,20 +1704,16 @@ QLineEdit {
border-radius: @InputFieldBorderRadius;
}
QLineEdit:disabled {
QLineEdit:disabled, QTextEdit:disabled {
background-color: @GeneralDisabledBackgroundColor;
color @TextDisabledColor;
}
QLineEdit:hover {
QLineEdit:focus, QTextEdit:focus {
border: 1px solid @AccentColor;
}
QLineEdit:focus {
border: 2px solid @UserHighlight1Color;
}
QLineEdit:selected {
QLineEdit:selected, QTextEdit:selected {
background-color: @GeneralBackgroundHoverColor;
}
@@ -1739,6 +1728,7 @@ QTabWidget {
}
QTabWidget:tab-bar {
background-color: transparent;
}
QTabWidget QWidget {}
@@ -1790,9 +1780,13 @@ QDockWidget QTabBar { /*tabbar in dockwidget */
qproperty-drawBase: 0;
}
QTabBar#mdiAreaTabBar::tab:bottom:selected {
background-color: @3DViewBackgroundRefColor;
border-top: @3DViewBackgroundRefColor;
}
QTabBar {
qproperty-drawBase: 1;/*tabbar for files. */
background-color: @TabbarBackgroundColor;
}
QTabWidget::tab-bar {
@@ -1877,9 +1871,9 @@ QTabBar::tab:top, QDockWidget QTabBar::tab:top {
}
QTabBar::tab:top:selected, QDockWidget QTabBar::tab:top:selected {
background-color: @3DViewBackgroundRefColor;
background-color: @GeneralBackgroundColor;
border-top: 1px solid @GeneralBorderColor;
border-bottom: 1px solid @3DViewBackgroundRefColor;
border-bottom: 1px solid @GeneralBackgroundColor;
border-left: 1px solid @GeneralBorderColor;
border-right: 1px solid @GeneralBorderColor;
margin-top: 0px;
@@ -1908,9 +1902,9 @@ QTabBar::tab:bottom, QDockWidget QTabBar::tab:bottom {
}
QTabBar::tab:bottom:selected, QDockWidget QTabBar::tab:bottom:selected {
background-color: @3DViewBackgroundRefColor;
background-color: @GeneralBackgroundColor;
border-bottom: 1px solid @GeneralBorderColor;
border-top: 1px solid @3DViewBackgroundRefColor;
border-top: 1px solid @GeneralBackgroundColor;
border-left: 1px solid @GeneralBorderColor;
border-right: 1px solid @GeneralBorderColor;
margin-bottom: 0px;
@@ -1939,9 +1933,9 @@ QTabBar::tab:left, QDockWidget QTabBar::tab:left {
}
QTabBar::tab:left:selected, QDockWidget QTabBar::tab:left:selected {
background-color: @3DViewBackgroundRefColor;
background-color: @GeneralBackgroundColor;
border-bottom: 1px solid @GeneralBorderColor;
border-right: 1px solid @3DViewBackgroundRefColor;
border-right: 1px solid @GeneralBackgroundColor;
border-left: 1px solid @GeneralBorderColor;
border-top: 1px solid @GeneralBorderColor;
margin-left: 0px;
@@ -1969,9 +1963,9 @@ QTabBar::tab:right, QDockWidget QTabBar::tab:right {
}
QTabBar::tab:right:selected, QDockWidget QTabBar::tab:right:selected {
background-color: @3DViewBackgroundRefColor;
background-color: @GeneralBackgroundColor;
border-bottom: 1px solid @GeneralBorderColor;
border-left: 1px solid @3DViewBackgroundRefColor;
border-left: 1px solid @GeneralBackgroundColor;
border-left: 1px solid @GeneralBorderColor;
border-top: 1px solid @GeneralBorderColor;
margin-right: 0px;
@@ -2067,7 +2061,7 @@ QDockWidget::float-button {
}
QDockWidget::float-button:hover {
/*background-color: @UserHighlight1Color;*/
/*background-color: @AccentColor;*/
image: url(qss:@IconsLocationFolderName/undock-blue.svg);
}
@@ -2083,39 +2077,6 @@ https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qtableview
--------------------------------------------------------------------------- */
QTreeView {
qproperty-indentation: 10;
selection-background-color: transparent;
}
QTreeView::branch {
background-color: transparent;
}
QTreeView::branch:has-siblings:!adjoins-item {}
QTreeView::branch:has-siblings:adjoins-item {}
QTreeView::branch:!has-children:!has-siblings:adjoins-item {}
QTreeView::branch:closed:has-children:has-siblings {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-right-@StylesheetIconsColor.svg);
}
QTreeView::branch:has-children:!has-siblings:closed {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-right-@StylesheetIconsColor.svg);
}
QTreeView::branch:open:has-children:has-siblings {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-down-@StylesheetIconsColor.svg);
}
QTreeView::branch:open:has-children:!has-siblings {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-down-@StylesheetIconsColor.svg);
}
QTreeView::indicator,
QListView::indicator,
QTableView::indicator,
@@ -2202,17 +2163,23 @@ QTableView,
QColumnView {
background-color: @PrimaryColor;/* background of a lot of stuff including spreadsheets.*/
/* gridline-color: @GeneralBorderColor; */
show-decoration-selected: 1;
alternate-background-color: @GeneralAlternateBackgroundColor;
selection-background-color: @UserHighlight1Color;
selection-background-color: @AccentBackgroundColor;
}
QListView {
background-color: @PrimaryColor;
border: 1px solid @GeneralBorderColor;
show-decoration-selected: 1;
alternate-background-color: @GeneralAlternateBackgroundColor;
selection-background-color: @UserHighlight1Color;
selection-background-color: @AccentBackgroundColor;
}
QTreeView {
show-decoration-selected: 1;
selection-background-color: @AccentBackgroundColor;
qproperty-indentation: 10;
}
QTreeView:disabled,
@@ -2241,33 +2208,24 @@ QColumnView::item:pressed {
background-color: @GeneralBackgroundHoverColor;
}
QListView::item:selected:active,
QTableView::item:selected:active,
QColumnView::item:selected:active {
background-color: @UserHighlight1Color;
}
QListView::item:selected:!active,
QTableView::item:selected:!active,
QColumnView::item:selected:!active {
background-color: @GeneralBackgroundHoverColor;
QListView::item:selected,
QTableView::item:selected,
QTreeView::item:selected,
QColumnView::item:selected {
background-color: @AccentBackgroundColor;
}
/* QTreeView::item:!selected:hover, */
QListView::item:!selected:hover,
QTableView::item:!selected:hover,
QColumnView::item:!selected:hover {
background-color: @GeneralBackgroundHoverColor;
}
QTreeView::item:selected:!active{
background-color: @GeneralBackgroundHoverColor;
background-color: @AccentHoverColor;
}
QTreeView::item:!selected:hover{
outline: 0;
color:@TextForegroundColor;
background-color: @GeneralBackgroundHoverColor;
background-color: @AccentHoverColor;
}
/* QTreeView::item, */
@@ -2370,8 +2328,7 @@ QToolBox {
}
QToolBox:selected {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QToolBox::tab {
@@ -2500,11 +2457,11 @@ QDateEdit QAbstractItemView, QDateTimeEdit QAbstractItemView {
--------------------------------------------------------------------------- */
QAbstractView:hover {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QAbstractView:selected {
background-color: @UserHighlight1Color;
background-color: @AccentColor;
}
/* PlotWidget -------------------------------------------------------------
@@ -2605,36 +2562,7 @@ QMdiSubWindow:hover {
}
QMdiSubWindow:active {
border:2px solid @UserHighlight1Color;
}
/*==================================================================================================
Settings menu #groupsTreeView:
==================================================================================================*/
QTreeView::branch#groupsTreeView:closed:has-children:has-siblings {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-right-@StylesheetIconsColor.svg);
}
QTreeView::branch#groupsTreeView:open:has-children:has-siblings {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-down-@StylesheetIconsColor.svg);
}
QTreeView::branch#groupsTreeView:open:has-children:!has-siblings {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-down-@StylesheetIconsColor.svg);
}
QTreeView::branch#groupsTreeView:has-children:!has-siblings:closed {
border-image: none;
image: url(qss:@IconsLocationFolderName/arrow-right-@StylesheetIconsColor.svg);
}
QTreeView::branch#groupsTreeView:has-siblings:!adjoins-item {
border-image: none;
border:2px solid @AccentColor;
}
/*==================================================================================================
@@ -2647,11 +2575,11 @@ QWidget#thumbnailWidget {
}
QWidget#thumbnailWidget[state="hovered"] {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
QWidget#thumbnailWidget[state="pressed"] {
border: 1px solid @UserHighlight1Color;
border: 1px solid @AccentColor;
}
/**
@@ -2672,14 +2600,13 @@ QGroupBox[objectName="matOpsGrpBox"] QPushButton {
QToolBar > Gui--WorkbenchComboBox QAbstractItemView {
min-width: 180px;
margin-left: 30px;
}
}
/* Below is a fix for indentation in properties*/
QTreeView::item#groupsTreeView {
margin-left:-8px;
/* background-color: @UserHighlight1Color; */
/* background-color: @AccentColor; */
}
QMainWindow QTableView {
@@ -2693,11 +2620,9 @@ QMainWindow QListView {
/* border-radius: 3px; */}
QTableView QPushButton {
min-width: 0px;
padding: 2px;
}
QTableView QPushButton:hover {
min-width: 0px;
background-color: @GeneralBackgroundHoverColor;
border: 1px solid @GeneralBorderColor;
}